【问题标题】:Copy Dictionary by value按值复制字典
【发布时间】:2010-01-16 21:44:08
【问题描述】:

如何在 c# 中按值复制 Dictionary 对象

【问题讨论】:

  • 你的意思是深拷贝(即复制字典中的所有对象)?

标签: c# dictionary


【解决方案1】:

创建一个新的Dictionary在构造函数中传递源字典(当然,如果是引用类型,这不会复制字典中的对象):

var copied = new Dictionary<KeyType, ValueType>(originalDictionary);

【讨论】:

    【解决方案2】:
    Using System.Linq;
    Dictionary<int, string> dict2 = dict1.ToDictionary(k => k.Key, k => k.Value.ToString());
    

    这将按值(不是 ref)创建一个相同的字典副本,因此您可以对一个字典进行操作而无需更改另一个。

    【讨论】:

      【解决方案3】:

      没有内在的方法可以做到这一点。您必须手动完成。

      第一步是确定您希望副本配对的深度。您是否想要单独的字典条目对象持有对公共键和值的引用,或者您想要复制所有内容。如果是后者,他们将需要实现 ICloneable 以创建通用方法。

      【讨论】:

      • 警告!仅仅因为一个类实现了ICloneable 并不意味着Clone 执行一个深拷贝。
      猜你喜欢
      • 2018-08-24
      • 2013-12-16
      • 2018-03-27
      • 2013-02-19
      • 1970-01-01
      • 2012-08-11
      • 2012-08-09
      • 1970-01-01
      相关资源
      最近更新 更多