`IReadOnlyList<T>` — это интерфейс в C#, который представляет строго упорядоченный и только для чтения набор элементов.
`IReadOnlyList<T>` определяет свойства и методы, которые коллекции должны реализовать для предоставления функциональности "только для чтения".
Интерфейс определяет следующие члены:
- `Count`: свойство, которое возвращает число элементов в коллекции.
- `this[int index]`: индексатор, который получает элемент по указанному индексу.
Это полезно, если вам нужно предоставить доступ к коллекции элементов, но вы не хотите, чтобы клиенты модифицировали эту коллекцию. То есть `IReadOnlyList<T>` предоставляет доступ на чтение к элементам коллекции, но не позволяет добавлять или удалять элементы.
Вот пример использования `IReadOnlyList<T>`:
```csharp
public class Example
{
private readonly List<int> _list = new List<int> { 1, 2, 3, 4, 5 };
public IReadOnlyList<int> GetReadOnlyList()
{
return _list.AsReadOnly();
}
}
public class Program
{
public static void Main(string[] args)
{
var example = new Example();
IReadOnlyList<int> readOnlyList = example.GetReadOnlyList();
for (int i = 0; i < readOnlyList.Count; i++)
{
Console.WriteLine(readOnlyList[i]);
}
}
}
```
Обратите внимание, что хотя `IReadOnlyList<T>` не позволяет изменять коллекцию через его методы и свойства, он не гарантирует, что сама коллекция не изменится. Например, в приведенном выше примере, если оригинальный список `_list` изменится, то изменения будут отражены и в возвращенном "только для чтения" списке. Для создания полностью неизменяемой коллекции вы можете использовать типы из пространства имен `System.Collections.Immutable`.