2010-11-03 143 views
0

如何將散列表深度複製到另一個新散列表?深度複製散列表

+1

http://stackoverflow.com/questions/129389/how-do-you-do-a-deep-copy-an-object-in-net-c-specifically – user281693 2010-11-03 20:25:32

+1

這是一個功課問題? – 2010-11-03 20:34:19

回答

0

您可以創建一個新的與舊的參數:

Dictionary<a,b> dic=new Dictionary<a,b>(oldDict) 

與同爲HashSet<T>。這從舊的內容構建了一個新的哈希表。

注意:如果您不使用默認比較器,則需要在構造器中再次指定它。

Dictionary<TKey, TValue>(IDictionary<TKey, TValue>)初始化Dictionary類的新實例,該實例包含從指定IDictionary複製的元素,並使用默認的相等比較器作爲鍵類型。

+0

它不會進行深度複製,新字典中存儲的鍵/值與舊字典中的相同。 – nos 2010-11-03 20:27:46

+0

@nos,如果它們是值類型,則不是。 – 2010-11-03 20:31:23

+0

我在集合中都有值類型和引用類型,所以http://stackoverflow.com/questions/129389/how-do-you-do-a-deep-copy-an-object-in-net-c-specifically效果最好.. – Allen 2010-11-03 21:25:10

1

如何:

public void CloneDict(Dictionary<K,V> dictionary) where V:IClonable 
{ 
    Dictionary<K,V> clonedOne = new Dictionary<K,V>(); 

    foreach(KeyValuePair<K,V> pair in dictoinary) { 
     clonedOne(pair.Key, (V) pair.Value.Clone() 
    } 
} 

然後實現對任何對象你在字典存儲IClonable。同樣的方法可以應用於Hashtable,但只能用於非泛型。