>백엔드 개발 >C++ >C#의 중첩`foreach` 루프 내부 목록을 안전하게 수정하는 방법은 무엇입니까?

C#의 중첩`foreach` 루프 내부 목록을 안전하게 수정하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-27 13:21:10807검색

How to Safely Modify Lists Inside Nested `foreach` Loops in C#?

C#의 루프 내부 목록을 안전하게 수정foreach

C#/.NET 4.0에서는 foreach 루프 중에 예외가 발생하지 않고 열거 가능한 개체를 수정할 수 있습니다. Paul Jackson의 블로그 게시물에서 이에 대해 자세히 설명합니다.

그러나 일반적인 질문이 생깁니다. 특히 중첩된 foreach 시나리오에서 foreach 루프 내에서 목록을 수정하는 가장 좋은 방법은 무엇입니까?

전통적으로 IList는 외부 foreach 루프가 끝날 때까지 변경 사항을 누적하는 캐시나 버퍼로 사용되는 경우가 많습니다. 하지만 더 나은 대안이 있을까요?

답변

foreach 루프에서 반복되는 컬렉션은 설계상 불변이라는 점에 유의하는 것이 중요합니다. MSDN 문서에 명시된 대로 foreach는 예측할 수 없는 부작용을 방지하기 위해 소스 컬렉션을 수정하는 것이 아니라 데이터에 액세스하도록 설계되었습니다.

소스 컬렉션에서 항목을 추가하거나 제거해야 하는 경우 대신 for 루프를 사용하는 것이 좋습니다. 이를 통해 컬렉션에 대한 예측 가능하고 통제된 수정이 보장됩니다.

Poko가 링크한 블로그 게시물에서는 C#/.NET 4.0에 도입된 동시 컬렉션에는 이 제한이 적용되지 않을 수 있다고 제안합니다.

위 내용은 C#의 중첩`foreach` 루프 내부 목록을 안전하게 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.