В цикле foreach
в C# можно использовать любые типы объектов, реализующие один из следующих интерфейсов:
System.Collections.IEnumerable
- Для неуниверсальных коллекций. Предоставляет неуниверсальный перечислитель IEnumerator
.System.Collections.Generic.IEnumerable<T>
- Для универсальных коллекций. Предоставляет универсальный перечислитель IEnumerator<T>
.Класс или структура также могут использоваться в foreach
, если они имеют публичный метод GetEnumerator()
, который возвращает экземпляр класса/структуры, реализующей следующую сигнатуру (это называется pattern-based foreach
):
Current
, возвращающее любой тип.MoveNext()
, возвращающий bool
.Dispose()
(для правильного освобождения ресурсов при использовании using
).Примеры встроенных типов, которые можно использовать:
int[]
, string[]
и т.д.)System.Collections
: ArrayList
, Hashtable
, Queue
, Stack
.System.Collections.Generic
: List<T>
, Dictionary<TKey, TValue>
, HashSet<T>
, Queue<T>
, Stack<T>
.В цикле foreach
в C# можно использовать любые типы объектов, реализующие один из следующих интерфейсов:
System.Collections.IEnumerable
- Для неуниверсальных коллекций. Предоставляет неуниверсальный перечислитель IEnumerator
.System.Collections.Generic.IEnumerable<T>
- Для универсальных коллекций. Предоставляет универсальный перечислитель IEnumerator<T>
.Класс или структура также могут использоваться в foreach
, если они имеют публичный метод GetEnumerator()
, который возвращает экземпляр класса/структуры, реализующей следующую сигнатуру (это называется pattern-based foreach
):
Current
, возвращающее любой тип.MoveNext()
, возвращающий bool
.Dispose()
(для правильного освобождения ресурсов при использовании using
).Примеры встроенных типов, которые можно использовать:
int[]
, string[]
и т.д.)System.Collections
: ArrayList
, Hashtable
, Queue
, Stack
.System.Collections.Generic
: List<T>
, Dictionary<TKey, TValue>
, HashSet<T>
, Queue<T>
, Stack<T>
.Register or sign in to get access to full answers for all questions from the question bank.