class Person
{
public int age;
public Person()
{
age = 1;
}
}
class Customer : Person
{
public Customer()
{
age += 1;
}
}
Customer customer = new Customer();
顾客的年龄是2岁吗?看起来无论如何都会调用基类的构造函数。如果是这样,为什么我们需要打电话base
有时最后?
public Customer() : base()
{
.............
}
这就是 C# 的工作原理。类型层次结构中每个类型的构造函数将按照“Most Base -> Most Derived”的顺序调用。
所以在你的特定实例中,它调用Person()
, 进而Customer()
在构造函数命令中。有时需要使用的原因base
构造函数是指当前类型下面的构造函数需要附加参数。例如:
public class Base
{
public int SomeNumber { get; set; }
public Base(int someNumber)
{
SomeNumber = someNumber;
}
}
public class AlwaysThreeDerived : Base
{
public AlwaysThreeDerived()
: base(3)
{
}
}
为了构建一个AlwaysThreeDerived
对象,它有一个无参数构造函数。但是,那Base
类型没有。因此,为了创建无参数构造函数,您需要向基本构造函数提供一个参数,您可以使用base
执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)