添加到构造函数中的只读集合?

Jer*_*acs 2 c# constructor readonly-collection

是否有 c# 语言构造允许我将项目添加到构造函数中的只读集合属性中?我想做这样的事情:

public class Node{
    public IList<Node> Children {get; protected set;}
    public Node(){
        Children = new ObservableList<Node>();
    }
}
Run Code Online (Sandbox Code Playgroud)

...在我的代码中的某个地方...

var node = new Node {Children.Add(new Node())};
Run Code Online (Sandbox Code Playgroud)

(不是一个很好的例子,但我希望这能传达这个想法)...

更新

好吧,抱歉,我需要说得更清楚。这门课不是我写的Node,我也不能改变它。我问是否有 ac# 语言概念允许我添加到第二个片段中无参数构造函数中的只读集合,假设该类Node不可更改。

Sri*_*vel 5

尝试这个。在构造上添加元素绝对是可能的

var node = new Node
 {
     Children =
    {
        new Node(),
        new Node()
    }
 };
Run Code Online (Sandbox Code Playgroud)

  • 他是对的,它确实有效,我不知道编译器那么聪明:)不过请注意,这只在所有元素都显式添加的情况下才有效,如果你想通过列表添加它们,你将需要一个助手方法 (3认同)