在C#/.NET/.NET Core应用程序编程开发中,当前有一个泛型的字典Dictionary<string, T>,有哪些方式可以实现深度克隆或者拷贝这个泛型字典成一个新的字典实例呢,哪种方式更好呢?
Dictionary<string, T>
Rector
2020-03-10 提问
使用LINQ的ToDictionary()静态扩展方法可以快速深度克隆/拷贝一个字典,如下:
ToDictionary()
2020-03-10 回答
如果要支持低版本的.NET(比如:.NET 2.0),可以使用实现ICloneable接口来处理,创建一个深度克隆/拷贝字典的方法,如下:
ICloneable
完整示例如下:
输出结果:
注:此示例中字典的值类型为string,你也可以使用其他任意的实现了ICloneable接口的数据类型。比如: 请自行实现Customer类中的Clone()方法。
注:此示例中字典的值类型为string,你也可以使用其他任意的实现了ICloneable接口的数据类型。比如:
string
请自行实现Customer类中的Clone()方法。
Customer
Clone()
使用序列化并反序列化的思路也可以实现,并且不需要额外地实现ICloneable接口,方法如下:
注:需要在实例对象上指定[Serializable]的属性标记。
[Serializable]
码龄: 3136天
专注.NET/.NET Core