то не понимаю профита что он дает
Он полезен тогда когда тебе нужно собрать енумрбл по какой то логике последовательно, возможно из разных источников
простенькие state machine удобно писать. промежуточные результаты (типа суммирования) удобно внутри таких enumerable хранить.
А зачем он если я сам могу собрать колекцию и вернуть ее как результат безо всяких yield
ты памяти не тратишь
Кроме того оно лениво
IEnumerable теоретически бесконечный :shruggie:
практически вроде тоже
Ну как так-то
не бейте где в синтаксисе ошибся class Fibonacci : IEnumerator<int> { private int alpha = 0; private int beta = 1; public bool MoveNext { var memory = beta; beta = alpha + beta; alpha = memory; return true; } public int Current { get => beta; } } будет сколько угодно новые вещи выплёвывать
while(true) yield return 1;
всюди ) class Fibonacci : IEnumerable<int>, IEnumerator<int> { private int alpha = 0; private int beta = 1; bool IEnumerator.MoveNext() { var memory = beta; beta = alpha + beta; alpha = memory; return true; } public void Reset() { alpha = 0; beta = 1; } public int Current => alpha; object IEnumerator.Current => Current; public IEnumerator<int> GetEnumerator() => this; IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); public void Dispose() { } }
Обсуждают сегодня