2014-04-25 19 views
0

我沒有訪問的實用程序代碼是將行添加到SortedDictionary(Integer,RowData)我試圖迭代。它將新的RowData添加到列表的末尾。遍歷改變的SortedDictionary

所以我認爲正確的解決方案是做一個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爲空。但是你不能新的,或者至少我不能。

我在這裏做錯了什麼?是否有捷徑可尋?

+0

你需要做什麼?詢問你所採取的方法是一種常見的誤解,而不是你原來的問題。請用簡明扼要的英文句子描述你的問題(10-15字)。將問題分爲兩部分 - 問題和嘗試的步驟。不要將它們混合在一起,因爲它只會增加混淆。如果適用,請添加真實世界場景。抽象的想法/例子很少有效。 – Neolisk

回答

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() 

這些都不是本質上是線程安全的。這樣做的正確方法是在此處和實用程序代碼中實現鎖定。由於您無法訪問代碼,因此您的選擇似乎在此處受限,但其他人可能有一些想法。

+0

也許不是一個「好」的解決方案,而是一個工作的解決方案!謝謝! –