Search code examples
c#constructorreadonly-collection

Add to a readonly collection in a constructor?


Is there a c# language construct that will allow me to add items to a readonly collection property in a constructor? I want to do something like this:

public class Node{
    public IList<Node> Children {get; protected set;}
    public Node(){
        Children = new ObservableList<Node>();
    }
}

... in my code somewhere...

var node = new Node {Children.Add(new Node())};

(not a great example, but I hope this gets the idea across)...

UPDATE

OK sorry I need to be clearer. I didn't write this Node class, and I cannot change it. I am asking if there is a c# language concept that will allow me to add to the readonly collection in the parameterless constructor in the second snippet, assuming the Node class is not changeable.


Solution

  • Try this. It is definitely possible to add elements on construction

    var node = new Node
     {
         Children =
        {
            new Node(),
            new Node()
        }
     };