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

本文关键字:字典 复制 另一个 引用类型 包含值 | 更新日期: 2023-09-27 17:54:43

可能重复:
克隆/深度复制.NET通用词典的最佳方法是什么<字符串,T>?

嗨!我陷入了困境,我真的需要帮助:(所以我有一本字典

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

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

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

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

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

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

你想做一个"深度复制"。点击此处查看Jon Skeet的答案。

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

不要试图重新发明轮子,使用已经创建的东西。对于这种情况,我使用BLTookit,在这里http://bltoolkit.net/Doc.ObjectToObject.ashx或者这里是这个AutoMapperhttp://automapper.codeplex.com/.