2010-11-03 110 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,但只能用于非泛型。