gpt4 book ai didi

c# - 初始化私有(private)成员 c#

转载 作者:行者123 更新时间:2023-11-30 18:54:16 24 4
gpt4 key购买 nike

我有两个私有(private)列表,需要在创建对象时对其进行初始化。第二个列表依赖于第一个。我可以这样做吗:

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

...
}

第二个列表是第一个列表的只读包装。

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

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

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

Error   1   A field initializer cannot reference the 
non-static field, method, or property...

最佳答案

没有。如果你想在类中基于一个单独的变量来初始化一个变量,你需要在构造函数中这样做:

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

}

内联初始化器始终在静态上下文中运行,这意味着您无法访问类中的成员变量。但是,在构造函数内部,您可以这样做。内联初始化器将出现在构造函数之前,这就是为什么我可以保留列表初始化的原因。

关于c# - 初始化私有(private)成员 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2194531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com