c# 루프 : 폐쇄 문제로 이어지는 설계 결함
C#'s foreach
루프 내부에서 Lambda 표현식 또는 익명 메소드를 사용하면 "수정 된 폐쇄에 대한 액세스"오류가 생성 될 수 있습니다. 컴파일러의 루프 변수 처리는이 문제의 핵심 요소입니다.
값을 캡처합니다.
루프 변수 제한
루프와 유사)를 배치하기로 한 결정이 이루어졌습니다. 그러나 이것은 예상되는 행동과 오류를 일으키는 문제가되고, 모순되는 것으로 입증되었습니다. foreach
.
C# 5의 솔루션
이 설계 결함을 인식 한 Microsoft는 C# 5에서 C# 5에서 다루었습니다. 루프 변수는 이제 각 반복 내에서 를 범위로 삼았습니다. 이를 통해 클로저는 모든 루프주기에 대한 변수의 새로운 인스턴스를 캡처하여 "수정 된 클로저에 대한 액세스"문제를 해결하고 C#을 일반적인 프로그래밍 관행과 정렬합니다.
위 내용은 C#'s`foreach` 루프 변수 재사용은 왜 폐쇄 함정으로 이어지는가?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!