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

C# 如何将包含值引用类型的字典复制到C中的另一个字典#,c#,dictionary,copy,C#,Dictionary,Copy,可能重复: 你好!我遇到了困难,我真的需要帮助:( 所以我有一本字典 Dictionary<string, MyClass> dict = new Dictionary<string, MyClass>(); Dictionary dict=new Dictionary(); 其中MyClass是具有属性、方法等的某个类。当我尝试将此字典复制到另一个字典时,例如: Dictionary<string, MyClass> newDict = new Dic

可能重复:

你好!我遇到了困难,我真的需要帮助:( 所以我有一本字典

Dictionary<string, MyClass> dict = new Dictionary<string, MyClass>();
Dictionary dict=new Dictionary();
其中MyClass是具有属性、方法等的某个类。当我尝试将此字典复制到另一个字典时,例如:

Dictionary<string, MyClass> newDict = new Dictionary<string, MyClass>(dict);
Dictionary newDict=新字典(dict);
似乎数据是通过引用复制的,当我尝试更新newDict中的任何MyClass对象时,数据会在dict中更新。那么,我如何才能将一个字典复制到另一个字典,当我尝试更新副本中的数据时,原始字典中的数据保持不变

提前感谢:)
祝你今天愉快:)

你想做一个“深度复制”。

你想做一个“深度复制”。

你必须实现一个创建实例副本的
MyClass.Clone()
函数。然后迭代源集合中的所有项,并将克隆添加到目标集合。

您必须实现一个创建实例副本的
MyClass.clone()
函数。然后迭代源集合中的所有项目,并将克隆添加到目标集合。

不要尝试重新发明轮子,使用已经创建的东西。对于这种情况,我在这里使用
BLTookit
,或者在这里使用这个
AutoMapper

不要试图重新发明轮子,使用已经创造的东西。对于这种情况,我在这里使用
BLTookit
,或者在这里使用这个
AutoMapper

您不必使用
ICloneable
。事实上,如果没有,您可能会更好。好的,删除了接口要求。您不必使用
ICloneable
。事实上,如果没有,你可能会更好。好的,删除了接口要求。你应该解释它们如何帮助回答问题,而不是仅仅发布链接,你应该解释它们如何帮助回答问题。