Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
462 of 1492 menu
◀ ▶

Класс ReadOnlyDictionary

Класс ReadOnlyDictionary<TKey, TValue> оборачивает IDictionary<TKey, TValue> и реализует IReadOnlyDictionary<TKey, TValue>. Структуру нельзя менять через обёртку, но исходная таблица может обновляться.

Синтаксис

ReadOnlyDictionary<TKey, TValue> view = new ReadOnlyDictionary<TKey, TValue>(dictionary);

Пример

Давайте создать обёртку над Dictionary:

using System; using System.Collections.Generic; using System.Collections.ObjectModel; class Program { static void Main() { Dictionary<int, string> map = new Dictionary<int, string> { {1, "a"}, {2, "b"}, {3, "c"} }; ReadOnlyDictionary<int, string> view = new ReadOnlyDictionary<int, string>(map); Console.WriteLine(view[2]); } }

Результат выполнения кода:

"b"

Пример

Давайте вывести Count обёртки:

using System; using System.Collections.Generic; using System.Collections.ObjectModel; class Program { static void Main() { Dictionary<int, string> map = new Dictionary<int, string> { {1, "a"}, {2, "b"}, {3, "c"}, {4, "d"}, {5, "e"} }; ReadOnlyDictionary<int, string> view = new ReadOnlyDictionary<int, string>(map); Console.WriteLine(view.Count); } }

Результат выполнения кода:

5

Пример

Давайте увидеть правку исходной таблицы:

using System; using System.Collections.Generic; using System.Collections.ObjectModel; class Program { static void Main() { Dictionary<int, string> map = new Dictionary<int, string> { {1, "a"} }; ReadOnlyDictionary<int, string> view = new ReadOnlyDictionary<int, string>(map); map[1] = "x"; Console.WriteLine(view[1]); } }

Результат выполнения кода:

"x"

Смотрите также

  • интерфейс IReadOnlyDictionary,
    который задаёт контракт чтения
  • класс ReadOnlyCollection,
    который оборачивает список
  • класс FrozenDictionary,
    который не отражает изменения
  • класс Dictionary,
    который можно обернуть
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить