2014-10-20 2 views
-1

Если у меня есть этот код:Как реализовать методы интерфейса IEnumerable < >?

public class Pilota <T> { 
    public T Current { 
    get; 
    set; 
    } 
    private T NamePilota { 
    get; 
    set; 
    } 
    private T SurNamePilota { 
    get; 
    set; 
    } 
    public List <T> pilota; 
    public Pilota(int NumberPilota) { 
    pilota = (new T[NumberPilota]).ToList(); 

    } 
    public void Add(T name) { 
    pilota.Add(name); 

    } 
} 

Как реализовать методы интерфейса? Мне нужно, потому что я хотел использовать цикл Foreach.

Должен ли я создать MoveNext, Reset и Current, правильно? Но как я?

+3

есть вы смотрите на [документации] (http://msdn.microsoft.com /en-us/library/9eekhta0(v=vs.110).aspx)? –

+0

Просто верните перечислитель 'List '. – SLaks

+0

[Читать документы] (http://msdn.microsoft.com/en-us/library/9eekhta0 (v = vs.110) .aspx). 'IEnumerable ' необходимо реализовать 'GetEnumerator', и это' IEnumerator ', возвращенный этим методом, который должен будет реализовать' MoveNext', 'Reset' и т. Д. –

ответ

0

сделать это расширяет интерфейс "IEnumerable" и переопределить метод "GetEnumerator", используя ключевое слово yield:

public IEnumerable<T> GetEnumerator() { 
    foreach (T elem in pilota) yield return elem; 
} 
IEnumerator IEnumerable.GetEnumerator() { 
    return GetEnumerator(); 
} 
+0

Спасибо, но я не могу понять, что бы это строка кода: 'IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator();}' – grilletto

+0

.NET 1.0 не поддерживает дженерики. Эта универсальная версия итератора используется для обеспечения обратной совместимости. –

+0

конечно! Благодаря! :) – grilletto

Смежные вопросы