2015-11-11 97 views
-2

我认为这是一个错误的MSDN页面上的以下https://msdn.microsoft.com/en-us/library/ms173115.aspx页有关构造函数和下面的段落之后调用基构造函数:误差的基础构造函数(C#)

“使用this关键字在前面的例子导致该构造被称为:”

public Employee(int annualSalary) 
{ 
salary = annualSalary; 
} 

它不应该是这样吗?

public Employee(int weeklySalary, int numberOfWeeks) 
{ 
salary = weeklySalary * numberOfWeeks; 
} 

任何人都可以确认吗?非常感谢

+0

不 - 因为它传递weeklySalary * numberOfWeeks会找到一个构造函数接受单个int –

+0

这就是另一种方式来做到这一点,但如果正确的文档。我认为这是首选的方式。 – Paparazzi

回答

2

不,它显示你的构造方法的来源是由this(weeklySalary * numberOfWeeks)叫......,这就是单参数的构造函数刚刚分配给salary变量。

的代码看作是这样的:

// Constructor X 
public Employee(int weeklySalary, int numberOfWeeks) 
    : this(weeklySalary * numberOfWeeks) 
{ 
} 

// Constructor Y 
public Employee(int annualSalary) 
{ 
    salary = annualSalary; 
} 

然后文档为:

在构造X中的表达this(weeklySalary * numberOfWeeks)指示构造Y.链式呼叫

+0

非常感谢回答 – Eduardo

0

没有文档是准确的。想象2参数构造函数的作用就像调用方法主要实现的方法重载一样。

的2参数构造

public Employee(int weeklySalary, int numberOfWeeks) 
    : this(weeklySalary * numberOfWeeks) 
{ 
} 

是真正调用先前定义的1层参数的构造,其中annualSalary参数是weeklySalary * numberOfWeeks计算值。

public Employee(int annualSalary) 
{ 
    salary = annualSalary; 
} 
+0

谢谢!这解释了很多 – Eduardo

相关问题