私が使用する場合:
var strings = new List<string> { "sample" };
foreach (string s in strings)
{
Console.WriteLine(s);
strings.Add(s + "!");
}
Add
中には、foreach
私たちは私たちの足の下から敷物を引いているので、私は、論理的な検討している、;(列挙操作が実行されない可能性コレクションが変更された)と、InvalidOperationExceptionがスローされます。
ただし、私が使用する場合:
var strings = new List<string> { "sample" };
strings.ForEach(s =>
{
Console.WriteLine(s);
strings.Add(s + "!");
});
OutOfMemoryExceptionがスローされるまでループすることで、すぐに足を撃ちます。
List.ForEachは単なるforeach
またはのラッパーであるといつも思っていたので、これは私にとって驚きですfor
。
この動作の方法と理由について誰かが説明していますか?