如何将包含值的引用类型的字典复制到C#中的另一个字典

时间:2011-05-03 16:23:37

标签: c# dictionary copy

  

可能重复:
  What is the best way to clone/deep copy a .NET generic Dictionary<string, T>?

你好!我坚持一些东西,我真的需要帮助:( 所以我有一本字典

Dictionary<string, MyClass> dict = new Dictionary<string, MyClass>();

其中MyClass是一些具有属性,方法等的类。当我尝试将此词典复制到另一个词典时,例如:

Dictionary<string, MyClass> newDict = new Dictionary<string, MyClass>(dict);

似乎数据是通过引用复制的,当我尝试更新newDict中的任何MyClass对象时,数据会在dict中更新。那么如何将一个字典复制到另一个字典中呢?当我尝试更新副本中的数据时,原始数据保持不变?

提前致谢:) 祝你有愉快的一天:)

3 个答案:

答案 0 :(得分:3)

您正在寻找“深层复制品”。 See Jon Skeet's answer here

答案 1 :(得分:0)

您必须实现MyClass.Clone()函数,该函数会创建实例的副本。然后遍历源集合中的所有项目,并将克隆添加到目标集合中。

答案 2 :(得分:-2)

不要尝试重新发明轮子,使用已创建的东西。对于此类情况,我使用BLTookithttp://bltoolkit.net/Doc.ObjectToObject.ashx或此AutoMapper http://automapper.codeplex.com/