IEnumerator Назначение - PullRequest
       5

IEnumerator Назначение

5 голосов
/ 28 октября 2010

Я не совсем понимаю, что такое использование IEnumerator из коллекций C #.Для чего он используется и зачем его использовать?

Я пытался посмотреть онлайн на http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx, но эта статья не имеет особого смысла.Причина, по которой я спрашиваю, в Unity3d Game Engine, она используется вместе с функцией yield.Я пытаюсь понять причину использования IEnumerator.

Ответы [ 3 ]

10 голосов
/ 28 октября 2010

Интерфейс IEnumerator, реализованный классом, позволяет выполнять его итерацию с использованием встроенного синтаксиса foreach.

В классе, который должен быть повторен для интерфейса IEnumerator, определяется сигнатура метода для функции GetEnumerator, которая управляет циклическим перемещением по объекту.

public IEnumerator<OrderLine> GetEnumerator()
    {
        for (int i=0;i<maxItems;i++) 
        {
            yield return item[i];
        }
    }

Как видно из этого примера, оператор yield позволяет вернуть элемент управления вызывающей стороне, не теряя своего места в перечислении. Управление будет возвращено обратно в строку после оператора yield, когда вызывающая сторона достигнет следующего приращения цикла foreach.

1 голос
/ 28 октября 2010

Это просто интерфейс, который позволяет объектам выполнять операции для простой итерации по коллекциям. Вы можете использовать его для создания объектов, которые перебирают пользовательскую коллекцию с помощью конструкции foreach или похожего синтаксиса.

1 голос
/ 28 октября 2010

Вы редко используете IEnumerator в явном виде, но есть много методов расширения, которые работают с ним, а также foreach. Все коллекции реализуют его, и это пример шаблона Iterator.

...