基成员初始化部分 C#



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 )

相关内容

  • 没有找到相关文章

最新更新