2011-12-15 63 views

回答

2

C#中沒有任何東西可以做這樣的事情。

你說得對IEnumerator的當前屬性只定義爲一個getter。

你需要編寫一個新的類和/或接口來支持這樣的事情。

interface IOutputable<T> { 
    IOutputer<T> GetOutputer(); 
    } 

interface IOutputer<T> { 

    T Current { set; } 

    bool MoveNext(); 
    void Reset(); 
    } 
2

AFAIK輸出迭代器是一種創建對象序列的方法。在C#中有很多種方法可以做到這一點。例如,使用Stack。而不是做一個C++風格增量/分配操作你會做一推:

var sequence = new Stack<int>(); 
sequence.Push(1); 
sequence.Push(2); 

除非你有這方面一個非常具體的應用程序,那麼可能在試圖模仿輸出迭代器在C#中沒有任何好處。

+0

這應該是被接受的答案。 MerickOWA的方法可能會奏效,但這不是C#的做事方式。 – dan04 2011-12-16 15:00:11

0

根據你想要做什麼,yield return可能會做你正在尋找的東西。