Middle
163
questionbank
Какие основные свойства и методы у интерфейса IEnumerable?
Answer from AI
sobes.tech AI
IEnumerable в .NET представляет собой контракт, который позволяет коллекции быть итерируемой, т. е. перебирать ее элементы один за другим.
Его основное назначение — обеспечить стандартный способ доступа к элементам коллекции, не раскрывая ее внутреннюю структуру.
Интерфейс IEnumerable имеет один метод:
GetEnumerator(): Возвращает перечислитель (IEnumerator) для итерации по коллекции.
Интерфейс IEnumerable<T> (обобщенная версия) также имеет один метод:
GetEnumerator(): Возвращает перечислитель (IEnumerator<T>) для итерации по коллекции с элементами типаT.
Вот пример использования:
using System;
using System.Collections.Generic;
public class MyCollection : IEnumerable<int>
{
private int[] _data = { 1, 2, 3, 4, 5 };
public IEnumerator<int> GetEnumerator()
{
// Возвращаем перечислитель для встроенного массива
return ((IEnumerable<int>)_data).GetEnumerator();
}
// Явная реализация для IEnumerable
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator(); // Вызываем обобщенную версию
}
}
public class Program
{
public static void Main(string[] args)
{
MyCollection collection = new MyCollection();
// Использование foreach, который работает с IEnumerable
foreach (int item in collection)
{
Console.WriteLine(item);
}
}
}
Сам интерфейс IEnumerable (и его обобщенная версия IEnumerable<T>) не имеет свойств. Вся функциональность для перебора реализуется через возвращаемый им объект IEnumerator (или IEnumerator<T>), который имеет свойства и методы для управления итерацией (Current, MoveNext, Reset — хотя Reset реализуется не всегда).