4
List <T> .ForEachでリストを変更できるのはなぜですか?
私が使用する場合: 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。 この動作の方法と理由について誰かが説明していますか? (ジェネリックリストのForEachループによって無限に繰り返されます)