Как преобразование этого блока итератора является функциональным изменением?

Учитывая следующий фрагмент кода:

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;
    }
}

Этот вопрос вдохновленэтот вопрос который задает другой вопрос о похожей ситуации.

Ответы на вопрос(1)

Ваш ответ на вопрос