驚いたことに、私は今日、次の行動を観察しました。
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()
あります(ここでは必要ないようですので、コメントが必要です)。