List readonly with a private set

I think you are mixing concepts.

public List<string> myList {get; private set;}

is already “read-only”. That is, outside this class, nothing can set myList to a different instance of List<string>

However, if you want a readonly list as in “I don’t want people to be able to modify the list contents“, then you need to expose a ReadOnlyCollection<string>. You can do this via:

private List<string> actualList = new List<string>();
public ReadOnlyCollection<string> myList
{
  get{ return actualList.AsReadOnly();}
}

Note that in the first code snippet, others can manipulate the List, but can not change what list you have. In the second snippet, others will get a read-only list that they cannot modify.

Leave a Comment