.NET中制做对象的副本(三)通过序列化和反序列化为复杂对象制作副本

1、类的定义

复制代码
 /// <summary>
    /// 学生信息
    /// </summary>
    [Serializable]
    public class Stu
    {
        /// <summary>
        /// 学生姓名
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 学生的老师
        /// </summary>
        public List<Teacher> Teachers { get; set; }
    }

    /// <summary>
    /// 老师信息
    /// </summary>
    [Serializable]
    public class Teacher
    {
        /// <summary>
        /// 老师姓名
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 学生列表
        /// </summary>
        public List<Stu> Stus { get; set; }
    }
复制代码

2、实例化对象

这个学生类型比较复杂,和老师发生了循环引用。

复制代码
            Stu stu = new Stu()
            {
                Name = "马良",
                Teachers = new List<Teacher>()
                {
                        new Teacher()
                        {
                                Name="老师1",
                                Stus=new List<Stu> (){}
                        }
                }
            };
            stu.Teachers[0].Stus.Add(stu);
复制代码

3、对对象进行拷贝

     BinaryFormatter bfSerialize = new BinaryFormatter();
            MemoryStream ms = new MemoryStream();
            bfSerialize.Serialize(ms, stu);
            BinaryFormatter bfDeserialize = new BinaryFormatter();
            ms.Position = 0;
            Stu stu1 = (Stu)bfDeserialize.Deserialize(ms);

 下载源代码

posted on   漫思  阅读(245)  评论(0编辑  收藏  举报

编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示