Silverlight ツールキットで次のようなコードを見たことがありますが、安全な方法を理解できません。
private void ItemsSourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
// Update the cache
if (e.Action == NotifyCollectionChangedAction.Remove && e.OldItems != null)
{
for (int index = 0; index < e.OldItems.Count; index++)
{
_items.RemoveAt(e.OldStartingIndex);
}
}
}
たとえばインデックス 5 からアイテムを削除すると、_items
インデックス 5 以降のコレクション内のすべてのアイテムの現在のインデックスが以前よりも 1 つ少なくなることはありませんか? では、このコードのように「古い」インデックスを使用してアイテムを継続的に削除することは、どのように安全なのでしょうか?
なぜこれが機能するのかを本当に理解したいです。
何か案は?