:クラスプロパティの変更.Current
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
new List<Foo>{ new Foo(), new Foo(), new Foo() }
からfoos
を初期化すると、ループの書き込みを行いながら " 555 "。
私の質問:なぜこれが起こり、.ToList()
を使用してこれを回避する方法があるのですか(ここではコメントは必要ありません)。
ReSharperが「可能な複数の列挙」と呼べる素晴らしい世界へようこそ。列挙型はコレクションではありません**。列挙型がコレクション上にあり、その下にある列挙型を変更できることは、副作用です。 –