none
Цикл foreach и класс IEnumerable RRS feed

  • Вопрос

  • Разбираясь со стандартом языка C#, в книге Фаронова - "Программирование на языке C#" нашел информацию про класс IEnumerable, цитирую:"Класс должен исполнять интерфейсы IEnumerable и IEnumerator, если он(точнее, его объект) содержит коллекцию однотипных элементов, к которым предполагается применять оператор foreach ". Стало крайне интересно, неужели если в C# объявить, к примеру, массив по стандарте C++, с нему нельзя будет работать с помощью цикла foreach или это какое-то "косноязычие" книги?
    • Перемещено Tagore Bandlamudi 1 октября 2010 г. 21:21 MSDN Forums consolidation (От:Visual C#)
    12 сентября 2010 г. 4:17

Ответы

  • Дополнение к ответу OlegGel:

    Класс не обязан реализовывать IEnumerator. Достаточно только IEnumerable. Массивов по "стандарту С++" в C# нет, есть полноценные объекты-наследники Array, которые реализуют IEnumerable.

    На самом деле foreach не требует даже IEnumerable. Достаточно существования метода GetEnumerator, который вернет что-то с методом MoveNext и свойством Current.

    • Помечено в качестве ответа I.Vorontsov 15 сентября 2010 г. 13:17
    12 сентября 2010 г. 11:10
  • Можно, конечно. Массивы в C# неявно наследуются от класса Array. А Array реализует интерфейс IEnumerable.

    • Помечено в качестве ответа I.Vorontsov 15 сентября 2010 г. 13:17
    12 сентября 2010 г. 6:56

Все ответы

  • Можно, конечно. Массивы в C# неявно наследуются от класса Array. А Array реализует интерфейс IEnumerable.

    • Помечено в качестве ответа I.Vorontsov 15 сентября 2010 г. 13:17
    12 сентября 2010 г. 6:56
  • Дополнение к ответу OlegGel:

    Класс не обязан реализовывать IEnumerator. Достаточно только IEnumerable. Массивов по "стандарту С++" в C# нет, есть полноценные объекты-наследники Array, которые реализуют IEnumerable.

    На самом деле foreach не требует даже IEnumerable. Достаточно существования метода GetEnumerator, который вернет что-то с методом MoveNext и свойством Current.

    • Помечено в качестве ответа I.Vorontsov 15 сентября 2010 г. 13:17
    12 сентября 2010 г. 11:10