2014-10-20 33 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)? – 2014-10-20 20:29:39

+0

只需返回列表的枚舉器。 – SLaks 2014-10-20 20:29:57

+0

[閱讀文檔](http://msdn.microsoft.com/en-us/library/9eekhta0(v = vs.110).aspx)。 'IEnumerable '需要實現'GetEnumerator',它是由該方法返回的'IEnumerator ',需要實現'MoveNext','Reset'等。 – 2014-10-20 20:30:06

回答

0

使這個擴展 「的IEnumerable」 接口,並使用yield關鍵字覆蓋 「的GetEnumerator」 的方法:

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

謝謝,但我不明白這一行代碼:'IEnumerator IEnumerable.GetEnumerator(){0}返回GetEnumerator();}' – grilletto 2014-10-20 20:41:32

+0

NET 1.0不支持泛型。這個迭代器的非通用版本用於提供向後兼容性。當然是 – 2014-10-20 20:50:39

+0

!謝謝! :) – grilletto 2014-10-20 20:53:33

相關問題