迭代改变的SortedDictionary

时间:2014-04-25 10:30:14

标签: vb.net sorteddictionary

我无权访问的实用程序代码是将行添加到SortedDictionary(Integer,RowData)我试图迭代。它将新的RowData添加到列表的末尾。

所以我认为正确的解决方案是复制SortedDictionary,然后循环它。我不必担心同步问题,因为新添加的内容总是在结束之后。

但是怎么做?我无法弄清楚语法,MS的文档是,嗯,"基本",而且API对我没有任何意义。我想要的是SortedDictionary的副本,制作另一个SortedDictionary。但我得到的是某种KeyValuePair数组,我似乎无法做出正面或反面。

Dim TempR as KeyValuePair(Of Integer, RowData)
pRowDatas.CopyTo(TempR, 0)

那个人告诉我它不能复制它,因为一个或另一个是一维数组而另一个不是。所以我试过

Dim TempR() as KeyValuePair(Of Integer, RowData)
pRowDatas.CopyTo(TempR, 0)

然后它抱怨TempR无效。但是你不能新,或者至少我不能。

我在这里做错了什么?有一个简单的方法吗?

1 个答案:

答案 0 :(得分:0)

在示例代码中,您需要将数组初始化为pRowDatas

的大小
Dim TempR(0 To pRowDatas.Count-1) As KeyValuePair(Of Integer, RowData)
pRowDatas.CopyTo(TempR, 0)

您还可以使用ToArray扩展方法:

Dim TempR As KeyValuePair(Of Integer, RowData) = pRowDatas.ToArray()

这些都不具有线程安全性。执行此操作的正确方法是在此处和实用程序代码中实现锁定。由于您无法访问代码,因此您的选项似乎有限,但其他人可能有一些想法。