を反復処理するときにこのコードを実行する場合:コレクション列挙子
var list = new List<string>
{
"foo",
"bar",
};
foreach (var l in list)
{
Console.WriteLine(l);
list.Add("bar");
}
例外がスローされます。
のSystem.InvalidOperationException:コレクションが変更されました。列挙操作が実行されないことがあります。
列挙子がそのコレクションを反復処理している間に、コレクションが変更されたことを.NETがどのように知っていますか?コレクションオブジェクトにこれのフラグがありますか?
*それは、実行時間の詳細ではなく、コンパイル時一つだとして**、この事実を知らないどのようにC#コンパイラが知っている*コンパイラ: ) –