컬렉션의 모든 요소를 제거하려고했는데 이후로 .RemoveAll
이 표시되지 않았거나 아래 코드로갔습니다.System.Collections.IEnumerator 개체의 예기치 않은 동작
int number = addressBook.Items.Count;
System.Collections.IEnumerator enumerator = ...
while (enumerator.MoveNext())
{
target = enumerator.Current as Outlook.ContactItem;
target.Delete();
}
그러나 컬렉션의 나머지 요소 수는 대략 프로그램 실행마다 절반이라고 나타났습니다. 내 결론은 .Delete()
은 다음 요소로 건너 뜁니다. 즉, .MoveNext()
은 루프의 조건이 인 다음 다음으로 건너 뜁니다.
그래서 열거자를 다음과 같이 재설정하려고했습니다. I는 .Count
체크로
int number = addressBook.Items.Count;
System.Collections.IEnumerator enumerator = ...
while (enumerator.MoveNext())
{
target = enumerator.Current as Outlook.ContactItem;
target.Delete();
enumerator.Reset();
}
단, I는 마지막 요소가 삭제 된 후 남아있는 요소들의 수가 계속 한 것을보고하고 열거 리셋되고. 그리고 물론 예외가 생겼습니다.
이 사진에는 무엇이 있습니까? 나는 이 일 전에보고되고 해결 될 것이기 때문에 버그가 아니라는 것을 알고 있습니다 ...
단순히 'foreach' 루프를 사용하지 않는 이유는 무엇입니까? – Jon
수를 어떻게 확인합니까? – Tigran
@ 존 당신이 그것에 대해 생각하는 것은 컬렉션이 아닙니다. 그것은 아웃룩 이야기입니다. 나는 연락처를 제거하려고하는데 그것은 나를 싸워. –