Как я могу объявить недоступный для записи массив в C #? - PullRequest
3 голосов
/ 24 ноября 2010

В настоящее время мой код похож на это:

private static readonly int[] INTARRAY = {1, 2, 3};

Это не позволяет мне присвоить INTARRAY новому экземпляру int[] вне статического конструктора, но все же позволяет назначать отдельным int элементам.
Например:

INTARRAY[1] = 5;

Как сделать этот массив полностью доступным только для чтения? Это массив типов значений, и в объявлении ему присваивается инициализатор массива. Как я могу заставить эти начальные значения сохраняться бесконечно?

Ответы [ 3 ]

9 голосов
/ 24 ноября 2010

Если это массив, вы не можете.Но если вы хотите, чтобы он был IList<int>, вы можете сделать:

private static readonly IList<int> INTARRAY = new List<int> {1, 2, 3}.AsReadOnly();
1 голос
/ 24 ноября 2010

Если вы абсолютно настроены на использование массива, вы можете написать простой класс-оболочку для массива с доступным только для чтения индексатором , обращающимся к элементам.

1 голос
/ 24 ноября 2010

к сожалению, нет встроенной конструкции c #, которая предоставляет эту функцию для массивов. Лучшее решение - использовать список, если он соответствует потребностям вашего бизнеса

...