コレクション内のすべての要素を削除したかったのですが、表示されなかったため.RemoveAll
、以下のコードを使用しました。
int number = addressBook.Items.Count;
System.Collections.IEnumerator enumerator = ...
while (enumerator.MoveNext())
{
target = enumerator.Current as Outlook.ContactItem;
target.Delete();
}
ただし、コレクションに残っている要素の数は、プログラムの実行ごとに約半分になっていることに気付きました。私の結論は、.Delete()
それ自体が次の要素にスキップするということでした。つまり.MoveNext()
、ループの条件が次の要素にジャンプするということです。
そこで、次のように列挙子をリセットしようとしました。
int number = addressBook.Items.Count;
System.Collections.IEnumerator enumerator = ...
while (enumerator.MoveNext())
{
target = enumerator.Current as Outlook.ContactItem;
target.Delete();
enumerator.Reset();
}
ただし、確認した.Count
ところ、最後の要素が削除され、列挙子がリセットされた後、残っている要素の数はまだ1であることがわかりました。そしてもちろん、私の顔に例外がスローされました。
この写真には何が欠けていますか?それは何十年も前に報告され解決されるため、バグではないことはわかっています...