是否有与STL输出迭代器等效的C#?

时间:2011-12-15 15:17:52

标签: c# iterator writable

我正在寻找可以写入支持集合的某种类型的迭代器/枚举器。据我了解,c#枚举器是只读的。

3 个答案:

答案 0 :(得分:2)

C#中没有任何东西可以用来做这样的事情。

你说得对,IEnumerator的Current属性只定义为getter。

你需要编写一个新的类和/或接口来支持这样的事情。

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

interface IOutputer<T> {

  T Current { set; }

  bool MoveNext();
  void Reset();
  }

答案 1 :(得分:2)

AFAIK输出迭代器是一种创建对象序列的方法。在C#中有很多方法可以做到这一点。例如,使用Stack。而不是做C ++风格的增量/分配操作,你可以做一个推动:

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

除非你有一个非常具体的应用程序,否则尝试在C#中模拟输出迭代器可能没什么好处。

答案 2 :(得分:0)

根据您要执行的操作,yield return可能会执行您正在寻找的内容。