假设有一个名为 Employee
的基类,如下所示
public Employee(string name, int id, float pay)
: this(name, 0, id, pay, "") { }
public Employee(string name, int age, int id, float pay, string ssn)
{
// Better! Use properties when setting class data.
// This reduces the amount of duplicate error checks.
Name = name;
Age = age;
ID = id;
Pay = pay;
SocialSecurityNumber = ssn;
}
还有一个继承自 Employee
的类 Manager
,其构造函数如下
public Manager(string fullName, int age, int empID,
float currPay, string ssn, int numbOfOpts)
: base(fullName, age, empID, currPay, ssn)
{
.
StockOptions = numbOfOpts;
}
据我所知,this
关键字就像 base
关键字一样,只是它适用于同一类中的构造函数。我最大的问题是,在阅读一本引用书时,它说如果您不使用链接,Manager
对象的构造将包括七个“命中”。由于 Manager 继承自 Employees,这是否意味着每个 Manager 对象都“出生”为 Employee,然后再成为 Manager?在成为经理之后,您只需添加两个字段而不是七个?
最佳答案
是的,就是这样。
构造器参数从下往上流动,然后从上往下创建对象。它必须像这样,以防派生类需要在其构造函数中访问基类成员。
关于c# - 在构造函数链中使用 base 和 this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12861454/