닷넷 수집, MSDN states 열거 : 컬렉션이 변경되지 않고 남아있는컬렉션을 열거하고 수정 한 다음 예외를 throw하는 선례는 무엇입니까?
열거는만큼 유효합니다. 요소 추가, 수정 또는 삭제와 같이 컬렉션이 변경되면 열거자는 무의식적으로 무효화되고 해당 동작은 정의되지 않습니다.
정확히 "복구 불가능하게 무효화"된다는 것은 무엇을 의미합니까?
예를 들어 왼쪽과 오른쪽 하위 참조와 상위 참조를 모두 사용하여 이진 트리를 만듭니다. 이러한 트리에서는 트리의 단일 노드에 대한 단일 참조만으로 트리를 탐색 할 수 있으므로 트리에서 다음 노드를 쉽게 찾을 수 있습니다.
그래서이 트리에서는 다른 노드를 제거한다고 가정합니다. (아마도 현재 앉아있는 노드를 제거하지 않습니다.) 여전히 열거자를 무효화해야합니까? 여기서는 다중 스레드 작업, 루프를 실행하는 단일 스레드 및 루프 본문 내부의 컬렉션 수정에 대해 설명하지 않습니다.
이 "법"은 정말로 그 법칙입니까, 열거자인 이 계속되는 경우에도 일 수 있겠습니까?
+1. 일관된 방식으로 예외를 던지는 것이 안전성은 열거 자의 위치에 따라 열거 자에게 영향을 미치지 않는 방식으로 수정 된 컬렉션에 대해 열거를 계속할 수 있다는 잠재적 이점보다 훨씬 중요하다고 생각합니다. –
그건 내 생각이야 - 일관성 (특히 프레임 워크와 함께)은 가장자리의 경우에 이것을 할 수 있다는 한계 값보다 더 큰 가치가있다. –