你的问题应该不是顺着删还是倒着删,
而是不能对 同一个字典 同时进行遍历+删除
你改进的代码里,遍历和删除分离了,所以就没事了
Dim zd As New Dictionary(Of Integer, String)
zd.Add(1,"苹果")
zd.Add(2,"香蕉")
zd.Add(3,"波罗")
zd.Add(4,"桔子")
zd.Add(5,"桃子")
Dim kList As new List(of Integer)
For Each k As Integer In zd.keys
If k Mod 2 = 0 Then
kList.add(k)
End If
Next
For i As Integer = 0 To kList.Count-1 //改成这样,结果也一样正常
zd.Remove(i)
Next
For Each k As Integer In zd.keys
output.show(zd(k))
Next