Что такое набор только для чтения?

Я выполнил аналитика кода в системе защиты, я имел предупреждение CA2105. Я посмотрел на пример вмешательства класса. Я не понял, что можно присвоить интервал [] к интервалу только для чтения. Я думал только для чтения, был похож на константу C++ и делает это недопустимым.

Как Зафиксировать Нарушения, предлагают, чтобы я клонировал объект (который я не хочу делать), или 'Заменяют массив набором со строгим контролем типов, который не может быть изменен'. Я нажал на ссылку, и см. 'ArrayList' и добавляющий каждый элемент один за другим, и не похоже, что можно предотвратить что-то добавляющее больше.

Таким образом, когда у меня есть эта часть кода, что самый легкий или лучший способ состоит в том, чтобы сделать ее набором только для чтения?

public static readonly string[] example = { "a", "b", "sfsdg", "sdgfhf", "erfdgf", "last one"};

20
задан John Saunders 21 April 2010 в 06:52
поделиться

5 ответов

Самый простой способ получить коллекцию, которую нельзя изменить, - это использовать

ReadOnlyCollection

Пример из MSDN:

List<string> dinosaurs = new List<string>();
dinosaurs.Add("Tyrannosaurus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Deinonychus");
dinosaurs.Add("Compsognathus");

ReadOnlyCollection<string> readOnlyDinosaurs = new ReadOnlyCollection<string>(dinosaurs);
36
ответ дан 29 November 2019 в 22:54
поделиться
var readOnly = new ReadOnlyCollection<string>(example);
3
ответ дан 29 November 2019 в 22:54
поделиться

Если вы работаете с массивами, вы можете использовать

return Array.AsReadOnly(example);

, чтобы поместить ваш массив в коллекцию, доступную только для чтения.

8
ответ дан 29 November 2019 в 22:54
поделиться
public static readonly ReadOnlyCollection<string> example
    = new ReadOnlyCollection<string>(new string[] { "your", "options", "here" });

(хотя оно, вероятно, должно быть представлено как свойство get , а не как публичное поле)

11
ответ дан 29 November 2019 в 22:54
поделиться
ReadOnlyCollection<string> readOnlyCollection = 
            new ReadOnlyCollection<string>(example);
1
ответ дан 29 November 2019 в 22:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: