В первом объявлении вы все еще можете использовать следующее:
strList[0] = "Not a fruit";
ReadOnlyCollection<T>
оборачивает любой IList<T>
в легкий объект. Он передает все вызовы, которые не изменят коллекцию, на обернутый объект (get Count
, get Item[]
, GetEnumerator
), но выдает исключение для всех вызовов, которые изменят коллекцию (Add
, Remove
, Clear
, набор Item[]
).
Массивы не могут быть изменены, но они не доступны только для чтения. Это различие важно понять, или вы можете ввести некоторые серьезные проблемы с безопасностью, например, см. Path.InvalidPathChars Field .