Есть ли C # эквивалентный итератору вывода STL? - PullRequest
5 голосов
/ 15 декабря 2011

Я ищу какой-то тип итератора / перечислителя, который может писать в резервную копию.Как я понимаю, c # перечислители доступны только для чтения.

Ответы [ 3 ]

2 голосов
/ 15 декабря 2011

AFAIK Итератор вывода - это способ создания последовательности объектов. Существует множество способов сделать это в C #. Например, используя Stack. Вместо выполнения операции увеличения / назначения в стиле C ++ вы должны выполнить push:

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

Если у вас нет специального приложения для него, вероятно, нет смысла пытаться эмулировать выходные итераторы в C #.

2 голосов
/ 15 декабря 2011

В C # уже ничего не существует, чтобы сделать такую ​​вещь.

Вы правы. Текущее свойство IEnumerator определено только как метод получения.

Вам нужно написать новый класс и / или интерфейс для поддержки такой вещи.

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

interface IOutputer<T> {

  T Current { set; }

  bool MoveNext();
  void Reset();
  }
0 голосов
/ 15 декабря 2011

В зависимости от того, что вы пытаетесь сделать, yield return может делать то же, что и вы.

...