【发布时间】:2010-04-14 00:29:27
【问题描述】:
我有一个简单的Dictionary(of String, Object),我需要根据某些条件迭代并更改项目。
由于我无法修改正在迭代的集合,我该如何实现?
例如,以下显然会导致Invalid Operation Exception:
Dim mOptions As New Dictionary(of String, Object)
mOptions.Add("optA", "A")
mOptions.Add("optB", "B")
mOptions.Add("optC", "C")
For Each O As KeyValuePair(Of String, Object) In mOptions
Dim Val As Object = GetSomeOtherObjectBasedOnTheOption(O.Key, O.Value)
mOptions(O.Key) = Val
Next
无效操作异常
收藏已修改;枚举操作可能无法执行。
我想我需要先克隆字典并遍历副本?最好的方法是什么?
Dim TempOptions As New Dictionary(of String, Object)
For Each O As KeyValuePair(Of String, Object) In mOptions
TempOptions.Add(O.Key, O.Value)
Next
For Each O As KeyValuePair(Of String, Object) In TempOptions
Dim Val As Object = GetSomeOtherObjectBasedOnTheOption(O.Key, O.Value)
mOptions(O.Key) = Val
Next
虽然有点味道。
【问题讨论】: