Страницы

Поиск по вопросам

четверг, 26 декабря 2019 г.

Где реализован IEnumerator?

#c_sharp #коллекции


У меня появился вопрос, который не дает мне покоя вот уже несколько часов. Для того,
чтобы использовать foreach для кастомной коллекции, нужно реализовать метод интерфейса
IEnumerable. 

IEnumerator IEnumerable.GetEnumerator(){
        return arr.GetEnumerator();
    }


С этим все ясно. Но какой класс реализует интерфейс IEnumerator? По началу я думал
System.Array, но после того, как я не увидел IEnumerator в списке родителей System.Array
решил обратиться сюда. 
    


Ответы

Ответ 1



IEnumerator реализован типом, объект которого возвращает arr.GetEnumerator(). IEnumerator IEnumerable.GetEnumerator() { IEnumerator result = arr.GetEnumerator(); Console.WriteLine(result.GetType().FullName); return result; } Тип возвращаемого объекта - System.Array.SZArrayEnumerator. Вот этот SZArrayEnumerator и реализует IEnumerator.

Комментариев нет:

Отправить комментарий