Как преобразование этого блока итератора является функциональным изменением?
Учитывая следующий фрагмент кода:
public class Foo
{
public IEnumerable<string> Sequence { get; set; }
public IEnumerable<string> Bar()
{
foreach (string s in Sequence)
yield return s;
}
}
следующий фрагмент семантически эквивалентен, или он отличается? Если это отличается, как они функционируют по-разному?
public class Foo2
{
public IEnumerable<string> Sequence { get; set; }
public IEnumerable<string> Bar2()
{
return Sequence;
}
}
Этот вопрос вдохновленэтот вопрос который задает другой вопрос о похожей ситуации.