Внедрение IEnumerable <T> - PullRequest
       26

Внедрение IEnumerable <T>

3 голосов
/ 05 июля 2010

У меня есть код:

    public sealed class Sequence : IEnumerable<MyClass>
    {
        List<MyClass> _elements;

        public IEnumerator<MyClass> Getenumerator()
        {
            foreach (var item in _elements)
            {
                yield return item;
            }
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return this._elements.GetEnumerator();
        }
    }


// ....

Sequence s = new Sequence();

// ...
// filling s with some data
// ...

foreach(MyClass c in s)
{
   // some action
}

Этот код не хочет компилироваться.Не хочет компилировать. Использование универсального типа 'System.Collections.Generic.IEnumerator' требует аргументов типа '1'

Помогите мне переписать MyClass для поддержки перечисления.

Я пробовал несколько комбинаций, использовал гугл.Везде примеры Enumerable и IEnumerator без обобщений.

Ответы [ 2 ]

3 голосов
/ 05 июля 2010

Добавьте строку:

using System.Collections;

Вы хотите использовать System.Collections.IEnumerator, а не System.Collections.Generic.IEnumerator<T>.

0 голосов
/ 05 июля 2010

Звучит так, как будто вы просто пропускаете директиву using, поскольку IEnumerator (не универсальной разновидности) живет в System.Collections, а не System.Collections.Generic (который включен по умолчанию в начале каждого исходный файл).

Так что просто определите:

using System.Collections;

и ты в порядке.

...