내가 사용하는 경우 :
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
.
누구든지이 행동의 방법과 이유에 대한 설명이 있습니까?
( 끝없이 반복되는 Generic List에 대한 ForEach 루프에서 영감을 얻음 )