С большим удивлением я наблюдал сегодня следующее поведение :Учитывая класс
class Foo
{
prop int FooNumber { get; set; }
}
и этот код
IEnumerable<Foo> foos = Enumerable.Range(0,3).Select(new Foo());
foreach (var foo in foos)
foo.Bar = 5;
foreach (var foo in foos)
Console.Write(foo.Bar); // Writes 000
при инициализации foos
в new List<Foo>{ new Foo(), new Foo(), new Foo() }
цикл записывает «555».
Мой вопрос :Почему это происходит и есть ли способ обойти это без использования.ToList()
(который нуждается в комментарии, так как здесь он, кажется, не нужен ).