Какие типы можно использовать в предложении foreach?



Сразу к сути — можно использовать типы, которые реализуют интерфейс IEnumerable или IEnumerable. Либо же любые типы, которые удовлетворяют следующим условиям:



✍🏻 Включают открытый метод GetEnumerator без параметров с классом, структурой или тип интерфейсом в качестве возвращаемого значения;



✍🏻 Тип возвращаемого значения метода GetEnumerator должен содержать открытое свойство Current и открытый метод MoveNext без параметров с типом возвращаемого значения Boolean.