Класс 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,
который можно обернуть