从同一类中的其他构造函数调用构造函数

我有一个类与2个构造函数:

public class Lens { public Lens(string parameter1) { //blabla } public Lens(string parameter1, string parameter2) { // want to call constructor with 1 param here.. } } 

我想调用第二个构造函数。 这在C#中可能吗?

追加:this(required params)在构造函数的末尾做“构造函数链”

 public Test( bool a, int b, string c ) : this( a, b ) { this.m_C = c; } public Test( bool a, int b, float d ) : this( a, b ) { this.m_D = d; } private Test( bool a, int b ) { this.m_A = a; this.m_B = b; } 

源代码csharp411.com

是的,你会使用以下

 public class Lens { public Lens(string parameter1) { //blabla } public Lens(string parameter1, string parameter2) : this(parameter1) { } } 

这是对话的补充,也是我今天遇到的一些情况:在构造函数链接时,还必须考虑构造函数的评估顺序:

从Gishu的回答中借用一点(保持代码有点类似):

 public Test(bool a, int b, string c) : this(a, b) { this.C = c; } private Test(bool a, int b) { this.A = a; this.B = b; } 

如果我们改变在private构造函数中执行的评估,稍微会看到为什么构造函数sorting很重要:

 private Test(bool a, int b) { // ... remember that this is called by the public constructor // with `this(...` if (hasValue(this.C)) { // ... } this.A = a; this.B = b; } 

上面,我添加了一个确定属性C是否有值的伪函数调用。 乍一看, C似乎有一个值 – 它是在调用构造函数中设置的; 然而,重要的是要记住构造函数是函数。

this(a, b)被调用 – 并且必须“返回” – 在执行public构造函数之前。 换句话说,最后调用的构造函数是第一个构造函数。 在这种情况下, privatepublic之前被评估(只是使用可见性作为标识符)。