如何在C#中从构造函数调用其他构造函数?

4

我有一个构造函数如下:

public Blah(string a, string b)
{

}

public Blah(string a, string b, string c)
{
  this.a =a;
  this.b =b;
  this.c =c;
}

我该如何在第一个构造函数中调用第二个构造函数?

例如:

public Blah(string a, string b)
{
   Blah(a,b, "");
}

4
顺便说一下,这通常被称为构造函数链。 - Roman
4个回答

9
public Blah(string a, string b) : this(a, b, "")
{
}

public Blah(string a, string b, string c)
{
    // etc
}

1
最好使用 String.Empty 而不是 ""。 - abatishchev
@abatishchev:你有相关的参考资料吗?就我所知,这只是个人偏好和你认为更易读的问题。我更喜欢使用"" - LukeH
1
(可能)创建一个对象,String.empty不会。 - AndersK
@Anders:在我的机器上,object.ReferenceEquals("", string.Empty) 的结果为 true - 也就是说,它们是相同的内部化字符串对象。(即使不总是这样,我也可以接受每个程序集多一个微小的内部化字符串。) - LukeH
在大多数情况下,这确实对实际影响很小。 - AndersK

5
public Blah(string a, string b): this(a, b, String.Empty)
{

}

public Blah(string a, string b, string c)
{
  this.a =a;
  this.b =b;
  this.c =c;
}

1
public Blah(string a, string b) : this(a,b, "default_C_String")
{ 

} 

--- 无论您对 C 的期望默认值是什么...


-2

public Blah(string a, string b): this(a, b, String.Empty) {

公共的Blah(string a, string b):this(a, b, String.Empty) { }

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接