나는 최근 Collection was modified에 C # 에서이 일반적인 무효 작업 에 부딪 쳤고 그것을 완전히 이해하는 동안 일반적인 문제 (Google, 약 300k 결과!) 인 것 같습니다. 그러나 목록을 검토하는 동안 목록을 수정하는 것은 논리적이고 간단한 것 같습니다.
List<Book> myBooks = new List<Book>();
public void RemoveAllBooks(){
foreach(Book book in myBooks){
RemoveBook(book);
}
}
RemoveBook(Book book){
if(myBooks.Contains(book)){
myBooks.Remove(book);
if(OnBookEvent != null)
OnBookEvent(this, new EventArgs("Removed"));
}
}
일부 사람들은 반복 할 다른 목록을 만들지 만 문제를 피하고 있습니다. 실제 솔루션은 무엇입니까? 여기서 실제 디자인 문제는 무엇입니까? 우리 모두 는 이것을 하기를 원 하지만 디자인 결함을 나타내는 것입니까?
You consume an iterator from client code by using a For Each…Next (Visual Basic) or foreach (C#) statement라인을 놓치지 마세요
Iterator(설명대로 ListIterator작동 ) 및 (원하는대로 작동)이 있습니다. 이것은 컬렉션 유형과 구현의 넓은 범위에 걸쳐 반복자 기능을 제공하기 위해 그 지점 것이다 Iterator(당신이 균형 잡힌 트리?합니까의에 노드를 삭제하면 무슨 일이 매우 제한적 next()으로, 더 이상 화장 감각) ListIterator적은 데 인해 더 강력한 것 사용 사례.