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