今天我非常惊讶地观察到以下行为:给定一个类
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()
(需要评论,因为这里似乎不需要它)。