2011-12-15 84 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可能会做你正在寻找的东西。

相关问题