Неизменяемые списки в C #

В Java можно использовать метод Collections # unmodifiableList () для создания неизменяемого списка из существующего объекта List. Есть ли аналог в C #? Я новичок в этом языке и не смог найти ничего подобного в документации MSDN.


person Alex Marshall    schedule 10.11.2009    source источник
comment
Net framework предлагает это stackoverflow.com/questions/984042/unmodifiablelist -in-net-4-0   -  person Captain Comic    schedule 10.11.2009
comment
По этому поводу есть довольно много вопросов, в том числе: stackoverflow.com/questions / 1326574 / right-exing-a-listt   -  person Ruben Bartelink    schedule 10.11.2009


Ответы (1)


ReadOnlyCollection

var dinosaurs = new List<string>();

dinosaurs.Add("Tyrannosaurus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Deinonychus");
dinosaurs.Add("Compsognathus");

var readOnlyDinosaurs = new ReadOnlyCollection<string>(dinosaurs);
person Bob    schedule 10.11.2009
comment
Именно то, что я ищу, спасибо. Думаю, я еще не привык к поиску на сайте MSDN. - person Alex Marshall; 10.11.2009
comment
Лучший поиск для MSDN - это google :) Но я знал, что это называется ReadOnlyCollection. Если вы ищете список «Неизменяемый», у вас может быть меньше результатов. - person Bob; 10.11.2009
comment
Последняя строка может быть var readonlyDinosaurs = dinosaurs.AsReadOnly() - person Ruben Bartelink; 10.11.2009
comment
Обратите внимание, что это фактически не делает саму коллекцию доступной только для чтения. Скорее, он дает вам доступную только для чтения оболочку изменяемой коллекции; попытки изменить оболочку вызовут исключения, но любой, кто может получить ссылку на исходную коллекцию, все равно может ее изменить. - person Eric Lippert; 11.11.2009