【问题标题】:How to copy a dictionary containing reference type for value to another dictionary in C# [duplicate]如何将包含引用类型的字典复制到C#中的另一个字典[重复]
【发布时间】:2011-08-17 20:55:35
【问题描述】:

可能重复:
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 中。那么如何将一个字典复制到另一个字典,当我尝试更新副本中的数据时,原始数据保持不变?

在此先感谢 :) 祝你有美好的一天:)

【问题讨论】:

    标签: c# dictionary copy


    【解决方案1】:

    您正在寻找“深拷贝”。 See Jon Skeet's answer here.

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您不必使用ICloneable。事实上,如果没有,你可能会过得更好。
      • 好的,去掉接口要求。
      【解决方案3】:

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

      【讨论】:

      • 您应该解释它们如何帮助回答问题,而不仅仅是发布链接。
      猜你喜欢
      • 2021-09-26
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 2011-08-23
      相关资源
      最近更新 更多