在构造函数链中使用base和this

woo*_*gie 5 c# constructor

假设有一个基类被调用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;
}
Run Code Online (Sandbox Code Playgroud)

还有一个Manager继承自Employee类似构造函数的类

public Manager(string fullName, int age, int empID,
  float currPay, string ssn, int numbOfOpts)
    : base(fullName, age, empID, currPay, ssn)
{
    .
    StockOptions = numbOfOpts;
}
Run Code Online (Sandbox Code Playgroud)

据我所知,this关键字就像base关键字一样,只适用于同一类中的构造函数.我最大的问题是,在阅读参考书时,它说如果不使用链接,Manager对象的构造将包括七个"命中".由于Manager继承自Employees,这是否意味着每个Manager对象都是"出生"为Employee,然后再成为Manager?在它是经理后你只有两个字段而不是七个?

Jus*_*vey 5

是的,就是这样.

构造函数参数从下向上流动,然后从上到下创建对象.如果派生类需要在其构造函数中访问基类成员,则必须如此.