C# 中是否存在基本成员初始化部分?我尝试搜索和搜索,但不断提出有关初始化 List 类的问题。我所指的初始化列表看起来像这里的例子。
这样做的一个原因是初始化类中的常量。我本质上是想弄清楚我是否可以执行以下操作:
public class A{
private const string _name;
public A(string name): _name(name){
//stuff
}
}
同样,我正在尝试在 C# 中执行此操作,而不是C++。有什么想法吗?
您可以使用在构造函数中初始化的私有只读字段来执行此操作,因此:
public class A
{
private readonly string _name;
public A (string name)
{
_name = name;
}
}
readonly
字段只能内联或在构造函数中初始化,此后是常量。
不,C# 不支持像 C++ 那样在构造函数体之前进行成员初始化。您可以在声明字段时初始化字段,也可以在构造器主体中使用常规赋值。
在该位置只能使用 2 种方法 - 调用基类的构造器和调用同一类中的另一个构造器。有关详细信息,您可以查看 C# 规范(即第 17.10 节实例构造函数 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf):
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 )