Редактировать: Оппс, написал неправильный тест для обратного, мои извинения за неправильный ответ. Это делает буфер после исправления теста (используя перечислимое, возвращаемое Reverse ())
Похоже, метод обратного расширения работает только при заполнении коллекции. При использовании yield return он ничего не делает.
Столкнулся с проблемой, используя обратную мысль, что он должен буферизоваться, чтобы он работал, обнаружил, что он не работает с yield. Это просто пройти и ничего не делать. ниже мой тестовый код.
[TestMethod]
public void loopTest()
{
var series = this.GetSeries();
series.Reverse();
foreach (var l in series)
{
Debug.WriteLine(l);
}
}
private IEnumerable<long> GetSeries()
{
var series = new List<long>() { 1, 2, 3, 4 };
foreach (var entry in series)
{
Debug.WriteLine(entry);
yield return entry;
}
}
В обратном порядке вообще не вызывать функцию GetSeries, все обсуждения буфера в этом форуме выглядят совершенно неожиданно.