C#深拷贝扩展方法(引用类型利用序列化实现深拷贝)

2021/9/7 20:08:24

本文主要是介绍C#深拷贝扩展方法(引用类型利用序列化实现深拷贝),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!


/// <summary>
/// 深拷贝
/// 注意:T必须标识为可序列化[Serializable]
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static T DeepCopy<T>(this T obj)
where T : class
{
try
{
if (obj == null)
{
return null;
}

BinaryFormatter binaryFormatter = new BinaryFormatter();
using (MemoryStream stream = new MemoryStream())
{
binaryFormatter.Serialize(stream, obj);
stream.Position = 0;
return (T)binaryFormatter.Deserialize(stream);
}
}
catch
{
return null;
}
}
注意:

1.上述方法中,限定泛型T为引用类型,因为值类型本身不需要深拷贝;

2.类型T必须标明可序列化,即类前面添加特性[Serializable]。



这篇关于C#深拷贝扩展方法(引用类型利用序列化实现深拷贝)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程