C# 实现对象深拷贝(序列化方式)

简介: 利用 BinaryFormatter 实现对象深拷贝,适用于复杂对象复制。需标记类为 [Serializable],通过序列化与反序列化实现完整克隆,确保成员独立。

利用 BinaryFormatter 实现对象的深拷贝,适用于复杂对象的复制。

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public List<string> Hobbies { get; set; } = new List<string>();
}
public static class DeepCopyHelper
{
    public static T DeepCopy<T>(T obj)
    {
        using (var ms = new MemoryStream())
        {
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(ms, obj);
            ms.Position = 0;
            return (T)formatter.Deserialize(ms);
        }
    }
}
// 调用示例
public static void TestDeepCopy()
{
    var p1 = new Person { Name = "张三", Age = 25 };
    p1.Hobbies.Add("编程");
    var p2 = DeepCopyHelper.DeepCopy(p1);
    p2.Hobbies.Add("阅读");
    Console.WriteLine($"p1爱好: {string.Join(",", p1.Hobbies)}"); // 编程
    Console.WriteLine($"p2爱好: {string.Join(",", p2.Hobbies)}"); // 编程,阅读
}

注意:被拷贝的类必须标记 [Serializable] 特性。

相关文章
|
存储 算法
halcon模板匹配实践(1)算子参数说明与算子简介
halcon模板匹配实践(1)算子参数说明与算子简介
1489 0
|
6月前
|
网络协议 安全 C#
C# 实现 Modbus TCP 通信
C# 实现 Modbus TCP 通信
1074 4
|
6月前
|
存储 算法 C#
C# 哈希值计算:MD5/SHA256 加密
本示例展示了C#中使用MD5和SHA256算法生成哈希值的方法,适用于密码加密与数据校验。MD5安全性较低,建议仅用于非敏感场景;密码存储推荐使用SHA256配合盐值以增强安全性。
|
算法 C# C++
HALCON error #1201: Wrong type of control parameter: 1 in operator threshold
HALCON error #1201: Wrong type of control parameter: 1 in operator threshold
|
机器学习/深度学习 存储 文字识别
Halcon解决方案指南(18)OCR--字符识别
第18章 光学字符识别_OCR OCR(Optical Character Recongnition)即我们通常意义上讲的光学字符识别。在HALCON中,OCR常被用来分割区域及读取识别图像中的字符含义。
9857 57
|
6月前
|
存储 数据库连接 C#
C# 配置文件读取:App.config 用法
App.config用于存储程序配置(如数据库连接、接口地址),避免硬编码,提升可维护性。通过ConfigurationManager读取配置,支持字符串、整型、布尔值及连接字符串的获取,需引用System.Configuration程序集。
|
11月前
|
存储 网络协议 C#
C#实现与西门子S7-1200/1500 PLC通信
C#实现与西门子S7-1200/1500 PLC通信
|
11月前
|
监控 算法 C#
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
2252 0
|
数据库 数据库管理
【异常解决】svn报“Previous operation has not finished; run ‘cleanup‘ if it was interrupted”的错误解决方案
【异常解决】svn报“Previous operation has not finished; run ‘cleanup‘ if it was interrupted”的错误解决方案
2039 0
|
人工智能 前端开发 JavaScript
AI程序员:通义灵码 2.0应用VScode前端开发深度体验
AI程序员:通义灵码 2.0应用VScode前端开发深度体验,在软件开发领域,人工智能技术的融入正深刻改变着程序员的工作方式。通义灵码 2.0 作为一款先进的 AI 编程助手,与广受欢迎的代码编辑器 Visual Studio Code(VScode)相结合,为前端开发带来了全新的可能性。本文将详细分享通义灵码 2.0 在 VScode 前端开发环境中的深度使用体验。
2564 2
AI程序员:通义灵码 2.0应用VScode前端开发深度体验

热门文章

最新文章