【发布时间】:2010-01-16 21:44:08
【问题描述】:
如何在 c# 中按值复制 Dictionary 对象
【问题讨论】:
-
你的意思是深拷贝(即复制字典中的所有对象)?
标签: c# dictionary
如何在 c# 中按值复制 Dictionary 对象
【问题讨论】:
标签: c# dictionary
创建一个新的Dictionary在构造函数中传递源字典(当然,如果是引用类型,这不会复制字典中的对象):
var copied = new Dictionary<KeyType, ValueType>(originalDictionary);
【讨论】:
Using System.Linq;
Dictionary<int, string> dict2 = dict1.ToDictionary(k => k.Key, k => k.Value.ToString());
这将按值(不是 ref)创建一个相同的字典副本,因此您可以对一个字典进行操作而无需更改另一个。
【讨论】:
没有内在的方法可以做到这一点。您必须手动完成。
第一步是确定您希望副本配对的深度。您是否想要单独的字典条目对象持有对公共键和值的引用,或者您想要复制所有内容。如果是后者,他们将需要实现 ICloneable 以创建通用方法。
【讨论】:
ICloneable 并不意味着Clone 执行一个深拷贝。