使用this转发构造函数调用

this关键字的其中一个用处是,强制一个构造函数调用另一个构造函数,以避免冗余的成员初始化逻辑。考虑下面对Employee类的修改:

public class Employee
{
      public Employee(string fullName, int empID, float currPay)
      {
            this.fullName = fullName;
            this.empID = empID;
            this.currPay = currPay;
      }
 
      public Employee(string fullName)
             : this(fullName, IDGenerator.GetNewEmpID(), 0.0F)
      {
      
      }
}

Employee类的这个版本定义了两个构造函数,其中第二个只需要一个参数(雇员的姓名)。然而,为了完全构建一个新的Employee,需要保证有一个有效的ID(empID)和工资(currPay)。假设已经创建了自定义类(IDGenerator),它定义了名为GetNewEmpID()的静态方法,那么就可以生成一个新的雇佣ID。一旦获得了正确的初始参数集合,可以将创建请求转发到相应的带三个参数的构造函数。
如果不转发调用,需要为每一个构造函数添加冗余的代码:

public Employee(string fullName)
{
      this.fullName = fullName;
      this.empID = IDGenerator.GetNewEmpID();
}

 

posted @ 2013-04-27 23:51  SogetsuKazama  阅读(170)  评论(0)    收藏  举报