.NET 1 не имеет «глубоко неизменяемых» коллекций, которые делают элементы-члены неизменяемыми.Например.ReadonlyCollection<T>
запрещает добавление / удаление элементов, но отдельные элементы не копируются, поэтому их свойства могут быть изменены.
Поэтому вам необходимо скопировать элементы, составляющие коллекцию, если они сами не являются неизменными.Если бы элементы были неизменяемыми, было бы достаточно поместить мелко неизменяемую обертку вокруг коллекции (например, ReadonlyCollection<T>
).
1 Учитывая BCL.Такие расширения, как среда выполнения F #, - это другое дело.