> 백엔드 개발 > C++ > C# 5.0의 캡처된 클로저 수정이 For 루프에 적용되지 않는 이유는 무엇입니까?

C# 5.0의 캡처된 클로저 수정이 For 루프에 적용되지 않는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-07 19:16:43
원래의
366명이 탐색했습니다.

Why Doesn't C# 5.0's Captured Closure Fix Apply to For Loops?

C# 5.0의 클로저 캡처(루프 변수)

질문:

C# 5.0에서는 foreach 루프의 클로저 캡처 문제가 해결되어 루프 변수의 올바른 값이 캡처됩니다. 그러나 for 루프에는 여전히 동일한 문제가 존재합니다. 두 가지 유형의 루프 모두에서 이 문제가 해결되지 않는 이유는 무엇입니까?

정답:

for 루프의 기존 동작은 논리적으로 타당합니다. foreach 루프는 각 반복마다 새 변수를 선언하는 것과 유사하지만 for 루프에는 초기화 프로그램, 조건, 반복기 및 본문을 포함하는 고유한 구조가 있습니다.

for 루프의 초기화는 한 번만 실행되므로 "변수 인스턴스화"를 한 번만 수행하는 것이 논리적입니다. 또한 각 루프 반복에 대한 변수의 "초기" 값에 대한 고유한 가정이 없습니다.

다음 예를 고려해 보세요.

<code class="language-C#">for (int i = 0, j = 10; i < 5; i++, j--) {
    Action action = () => Console.WriteLine(i, j);
    action();
}</code>
로그인 후 복사

이 경우 for 루프에 대해 이 문제를 해결하면 해당 동작을 판단하기 어려울 것입니다.

위 내용은 C# 5.0의 캡처된 클로저 수정이 For 루프에 적용되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿