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