C# 사이클에서 변수 캡처 문제에 대해 논의하는
C#에서 개발자는 사이클 반복에 캡처 변수를 사용할 때 흥미로운 문제가 발생합니다. 다음 코드 조각을 고려하십시오
캡처 변수의 문제를 해결
의 사본을 작성함으로써 각 작업은 자체 유일한 예제를 캡처하여
가 Lambda 표현식 외부로 변경되도록하면 캡처 값에 영향을 미치지 않습니다.<code class="language-csharp">List<Action> actions = new List<Action>(); int variable = 0; while (variable < 5) { actions.Add(() => Console.WriteLine(variable * 2)); ++variable; } foreach (var act in actions) { Console.WriteLine(act.Invoke()); }</code>다른 일반적인 상황
variable
반복과 같은주기의 변수와 관련된 다른 시나리오에서도 나타날 수 있습니다.
variable
이 두 경우에서는 변수의 로컬 사본이 현재 사이클 반복을 캡처하기 위해 필요합니다.
위 내용은 캡처 된 변수가있는 C# 루프가 예상치 못한 결과를 낳는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!