Класс ReadOnlyCollection
Класс ReadOnlyCollection<T>
оборачивает IList<T> и запрещает
изменение структуры, но может отражать
правки исходного списка.
Синтаксис
ReadOnlyCollection<T> view = new ReadOnlyCollection<T>(list);
Пример
Давайте создадим обёртку через AsReadOnly:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> nums = new List<int> {1, 2, 3, 4, 5};
ReadOnlyCollection<int> view = nums.AsReadOnly();
Console.WriteLine(view[2]);
}
}
Результат выполнения кода:
3
Пример
Давайте выведем Count:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> nums = new List<int> {1, 2, 3, 4, 5};
ReadOnlyCollection<int> view = nums.AsReadOnly();
Console.WriteLine(view.Count);
}
}
Результат выполнения кода:
5
Пример
Давайте изменим исходный List:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> nums = new List<int> {1, 2, 3, 4, 5};
ReadOnlyCollection<int> view = nums.AsReadOnly();
nums[4] = 9;
Console.WriteLine(view[4]);
}
}
Результат выполнения кода:
9
Пример
Давайте обойдём обёртку:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> items = new List<string> {"a", "b", "c", "d", "e"};
ReadOnlyCollection<string> view = items.AsReadOnly();
Console.WriteLine(view[0]);
}
}
Результат выполнения кода:
"a"
Смотрите также
-
метод
AsReadOnly,
который создаёт ReadOnlyCollection -
интерфейс
IReadOnlyList,
который описывает контракт обёртки -
интерфейс
IReadOnlyCollection,
который задаёт Count без записи -
класс
List,
который можно обернуть для чтения