Size: a a a

2021 November 13

y

you know who i am🤔... in С#
сами обходы и построение дерева я сделаю легко
источник

ВE

Виталий EasyMod... in С#
Токс начал понимать токса и токсы отписались жизненно. Такая она тоскливая жизнь токсика
источник

y

you know who i am🤔... in С#
только вперед может идти?
тогда ему нужно дать готов массив обхода
источник

ML

Maksim Lyalin in С#
Только вперед. В этом вся суть перечислителей элементов. Если коротко IEnumerator - интерфейс перечислителя, IEnumerable - интерфейс объекта, который можно перечислить. Не совсем понял про готовый массив обхода
источник

y

you know who i am🤔... in С#
ну если может идти только вперед
а мне же нужна разные виды обхода дерева в зависимости от того как хочет пользователь
нужно ему передать готовый массив обхода по которому он будет ходить вперед
источник

ML

Maksim Lyalin in С#
Можно создать итератор, который будет проходит по дереву задом наперед, ну или как ты хочешь. Просто суть в том, что в самом итераторе нельзя сделать шаг назад, а как он будет брать элементы из коллекции, можешь решать сам
источник

y

you know who i am🤔... in С#
Спасибо
источник

y

you know who i am🤔... in С#
источник

y

you know who i am🤔... in С#
это нужный материал или совсем не то?
источник

ML

Maksim Lyalin in С#
Ну так-то полезно знать, yield автоматически реализует MoveNext() у итератора. Лучше попытаться создать самостоятельно класс итератора, чтобы лучше понять как работает

public class NormalIterator<T> : IEnumerator<T>
{
  private T[] vs;
  private int length;
  private int index = -1; // Текущий индекс
  public T Current { get; private set; } // Текущий элемент
  public NormalIterator(T[] vs) // Инициализация итератора через массив
  {
      this.vs = vs;
      length = vs.Length;
  }
  public bool MoveNext() // Переход к следующему
  {
      index++;
      Current = vs[index];
      return index < length; // Если в коллецкии закончились элементы, то false
  }
}
источник

ML

Maksim Lyalin in С#
Примерно так выглядит обычный итератор для прямого обхода. Переделаешь как надо тебе
источник

y

you know who i am🤔... in С#
Понял спасибо
источник

y

you know who i am🤔... in С#
а как вы код вставляет таким образом?
источник

ML

Maksim Lyalin in С#
Чтобы в телеге форматировалось? Выделяю текст, правой кнопкой  открываю меню -> форматирование -> моноширный
источник

ML

Maksim Lyalin in С#
https://docs.microsoft.com/ru-ru/dotnet/api/system.collections.generic.ienumerator-1?view=net-5.0
Вот ссылка, которая пригодится по итераторам
источник

y

you know who i am🤔... in С#
понял
источник

ML

Maksim Lyalin in С#
Там еще есть методы Dispose и Reset
источник

y

you know who i am🤔... in С#
интересно что метод обхода лежит в самом классе
значит надо IEnumerator <T> наследовать в класс
источник

ML

Maksim Lyalin in С#
Точно. Можно конечно в методе через yield return реализовать, но все это автоматически компилится в дотнете также в отдельный класс
источник

U

Username in С#
Выпустили из подвала?
источник