c# - 克隆/深度复制 .NET 泛型 Dictionary<string, T> 的最佳方法是什么?

标签 c# generics collections clone

我有一本通用词典 Dictionary<string, T>我想从本质上提出一个 Clone() of ..any suggestions。

最佳答案

(注意:虽然克隆版本可能有用,但对于简单的浅拷贝,我在另一篇文章中提到的构造函数是更好的选择。)

您希望副本有多深,您使用的是哪个版本的 .NET?如果您使用的是 .NET 3.5,我怀疑对 ToDictionary 的 LINQ 调用(同时指定键和元素选择器)将是最简单的方法。

例如,如果您不介意该值是浅克隆:

var newDictionary = oldDictionary.ToDictionary(entry => entry.Key,
                                               entry => entry.Value);

如果您已经约束 T 来实现 ICloneable:

var newDictionary = oldDictionary.ToDictionary(entry => entry.Key, 
                                               entry => (T) entry.Value.Clone());

(那些未经测试,但应该有效。)

关于c# - 克隆/深度复制 .NET 泛型 Dictionary<string, T> 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/139592/

相关文章:

c# - 为什么在 VB.NET 和 C# 中根据值检查 null 会有所不同?

java - 泛型类和静态泛型方法

delphi - 在 Delphi 中使用泛型与属性接口(interface)

java - 将 Collection<myClass> 转换为 Collection<String>

c# - 使用反射从类列表的属性中获取值

scala - Scala 集合中的森林砍伐

c# - 什么 RegEx 字符串会找到字符串中最后(最右边)的一组数字?

c# - 在通用抽象类中实现强制转换运算符

java - 类泛型打破了完全独立的方法

c# - 使用 OWIN 从解决方案中的 WPF 项目启动 asp.net WebApi 项目