2009-10-26 2 views
1
IList<string> strList = new string[] { "Apple", "Mango", "Orange" }; 

IList<string> lst = new ReadOnlyCollection<string>(new[]{"Google", 
"MSN","Yahoo"}); 

В обоих случаях я не могу использовать «Добавить()» метод для добавления новых items.then почти как декларации такие же?разница между строкой [] ReadOnlyCollection в контексте коллекции

ответ

3

С первым, strList[2] = "Pear"; будет работать ... не со вторым. Массивы всегда изменяемы, поскольку вы можете переустанавливать по индексу, даже если вы не можете добавить/удалить. Только для чтения-коллекции - только для чтения.

3

Элементы в strList могут быть изменены (не добавлены или не удалены, но изменены).

2

В первом объявлении, вы можете использовать следующее:

strList[0] = "Not a fruit"; 

ReadOnlyCollection<T> обертывания любой IList<T> в легком объекте. Он проходит все вызовы, которые не изменили бы коллекцию на обернутом объект (получить Count, получить Item[], GetEnumerator), но генерирует исключение для всех вызовов, которые изменили коллекцию (Add, Remove, Clear, установите Item[]).

Массивы не изменяются, но они не только для чтения. Различие важно понять, или вы можете ввести некоторые серьезные проблемы с безопасностью, например, см. Path.InvalidPathChars Field.

 Смежные вопросы

  • Нет связанных вопросов^_^