初始化私有成员c#

zen*_*dar 2 .net c# initialization

我有两个私有列表需要在创建对象时初始化.第二个列表取决于第一个列表.我能这样做吗:

  public class MyClass
  {
      private List<T> myList = new List<T>();
      private ReadOnlyCollection<T> myReadOnlyList = myList.AsReadOnly;

      ...
  }
Run Code Online (Sandbox Code Playgroud)

第二个列表是第一个只读包装.

我可以期望c#每次运行时都按此顺序执行这两行吗?

或者我应该将这个初始化放在构造函数中?

编辑:
抱歉愚蠢的问题.我试过了,编译器说:

Error   1   A field initializer cannot reference the 
             non-static field, method, or property...
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 12

否.如果要基于类中的单独变量初始化变量,则需要在构造函数中执行此操作:

public class MyClass 
{ 
    private List<T> myList = new List<T>(); 
    private ReadOnlyCollection<T> myReadOnlyList;
    public MyClass()
    {
        myReadOnlyList = myList.AsReadOnly; 
    }

} 
Run Code Online (Sandbox Code Playgroud)

内联的初始化器总是在静态上下文中运行,这意味着您无法访问类中的成员变量.但是,在构造函数内部,您可以执行此操作.内联的初始值设定项将在构造函数之前发生,这就是我可以将列表初始化保留在原位的原因.