C#中是否存在基本成员初始化部分?我尝试搜索和搜索,但不断提出有关初始化List class的问题。我所指的初始化列表看起来就像位于here.
的示例这样做的一个原因是初始化类中的常量。我基本上想弄清楚我是否可以做到以下几点:
public class A{
private const string _name;
public A(string name): _name(name){
//stuff
}
}
同样,我试图用C#而不是C ++来做这件事。有什么想法吗?
答案 0 :(得分:4)
您可以使用构造函数中初始化的私有只读字段来执行此操作,因此:
public class A
{
private readonly string _name;
public A (string name)
{
_name = name;
}
}
readonly
字段只能在内联或构造函数中初始化,然后保持不变。
答案 1 :(得分:2)
不,C#在构造函数体之前不支持成员初始化,就像C ++一样。您可以在声明字段时初始化字段,也可以在构造函数体内使用正常赋值。
在该位置只能使用2个方法 - 调用基类的构造函数并调用同一个类中的另一个构造函数。您可以查看C#规范(即http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf,第17.10节实例构造函数)以获取详细信息:
constructor-declaration:
attributesopt constructor-modifiersopt constructor-declarator constructor-body
constructor-declarator:
identifier ( formal-parameter-listopt ) constructor-initializer
constructor-initializer:
: base ( argument-listopt )
: this ( argument-listopt )