Чтение о проблеме создания примитивного вектора только для чтения в C # (в принципе, вы не можете этого сделать),
public readonly int[] Vector = new int[]{ 1, 2, 3, 4, 5 }; // You can still changes values
Я узнал о ReadOnlyListBase . Это базовый класс для контейнеров объектов, которые позволяют получить доступ к их позициям, но не изменять их. Даже есть пример в Microsoft msdn .
http://msdn.microsoft.com/en-us/library/system.collections.readonlycollectionbase.aspx
Я немного изменил пример в msdn , чтобы использовать любой тип:
public class ReadOnlyList<T> : ReadOnlyCollectionBase {
public ReadOnlyList(IList sourceList) {
InnerList.AddRange( sourceList );
}
public T this[int index] {
get {
return( (T) InnerList[ index ] );
}
}
public int IndexOf(T value) {
return( InnerList.IndexOf( value ) );
}
public bool Contains(T value) {
return( InnerList.Contains( value ) );
}
}
... и это работает. Мой вопрос: почему не существует этого класса в стандартной библиотеке C #, возможно, в System.Collections.Generic? Я скучаю по этому? Где это находится?
Спасибо.