ArrayList300以上のレコードで埋め尽くされているVB.Netで使用しています。それらを処理するときに、順番に保存されていないため、指定されたインデックスのレコードを削除します。私の問題は、Arraylist使用する前のカウントを最初に見るRemoveAt()と373と表示されますが、数RemoveAt()回使用した後、カウントが425前後に上がることに気づきました。
のMSDNリファレンスページの理解から、ArrayList.RemoveAt()メソッドは指定されたインデックスの要素を削除し、ArrayListカウントを1つ減らす必要があります。
誰かがこの問題に遭遇したか、なぜそれがこれをしているのかについて何か手がかりがあれば、私に知らせてください。
arraylistの各要素を更新すると、オブジェクトのインスタンスになります。
これを更新するのは、配列リスト内で抽出して削除する要素を見つけるコードです。
While (SimsRun.Count > 0)
counter = 0
'Get a new record
While (counter < SimsRun.Count)
tempSim = SimsRun(counter)
If tempSim.BatchIndex = (simToFind - 1) Then
SimsRun.RemoveAt(counter)
Exit While
End If
counter = counter + 1
End While
Process Record
.
.
.
.
End While
これが含まれる外側のループは、SimsRun.Count()>0のときに実行されます。