亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C# 序列化与反序列化实战:从对象到文件的完整示例

C# 序列化与反序列化

当对象数据需在应用间移动或跨会话持久化时,序列化与反序列化必不可少。C# 中序列化将对象状态写入存储介质(常为文件),反序列化从存储表示重建对象。

以简单类 Tutorial 为例,包含 ID 和 Name 两属性。将实例序列化到文件,稍后读取文件重建对象,原始数据完好保留。

如何在 C# 中序列化对象

下面分步演示控制台应用中的过程。

  1. 创建带 ID 和 Name 属性的 Tutorial 类。
  2. 实例化类,赋值 ID = 1、Name = ".Net"。
  3. 将对象序列化到 Example.txt。
  4. 从文件反序列化对象并在控制台显示值。

将以下代码粘贴到 Program.cs。

步骤 1) 添加类。第一步添加将被序列化的类。

C# 序列化与反序列化实战:从对象到文件的完整示例

代码解析:

  1. 类必须标记 [Serializable] 特性;否则序列化失败。
  2. 定义 Tutorial 类,两字段:int ID 和 string Name。

步骤 2) 创建对象并序列化。实例化 Tutorial 对象并写入 Example.txt。

C# 序列化与反序列化实战:从对象到文件的完整示例

代码解析:

  1. 创建 Tutorial 实例,设 ID = 1、Name = ".Net"。
  2. 实例化 BinaryFormatter(注意:.NET 5+ 中 BinaryFormatter 已过时;生产代码建议用 System.Text.Json 或 XmlSerializer)。
  3. 以 FileMode.Create、FileAccess.Write 打开 FileStream 写入二进制数据。
  4. 调用 formatter.Serialize 将对象写入流,关闭流。

步骤 3) 反序列化对象。最后从文件读回数据验证过程。

C# 序列化与反序列化实战:从对象到文件的完整示例

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace DemoApplication {
    [Serializable]
    class Tutorial {
        public int ID;
        public string Name;
        static void Main(string[] args) {
            Tutorial obj = new Tutorial();
            obj.ID = 1;
            obj.Name = ".Net";
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new FileStream("E:\\ExampleNew.txt", FileMode.Create, FileAccess.Write);
            formatter.Serialize(stream, obj);
            stream.Close();
            stream = new FileStream("E:\\ExampleNew.txt", FileMode.Open, FileAccess.Read);
            Tutorial objnew = (Tutorial)formatter.Deserialize(stream);
            Console.WriteLine(objnew.ID);
            Console.WriteLine(objnew.Name);
            Console.ReadKey();
        }
    }
}

代码解析:

  1. 以读模式打开文件。
  2. 将二进制数据反序列化回 Tutorial 实例。
  3. 打印 ID 和 Name 到控制台。

在 Visual Studio 运行程序产生输出:

输出:

C# 序列化与反序列化实战:从对象到文件的完整示例

如图,值正确从文件检索。

总结

序列化将对象数据写入文件,反序列化从文件读回对象。这一基础技术支撑许多 .NET 数据交换场景。

C语言

  1. C# 类与对象:面向对象编程的基石
  2. 掌握 C# 抽象类与抽象方法:实战指南
  3. 理解 C# 分部类与分部方法
  4. 掌握 C# sealed 类与方法:用法、示例与代码安全性能提升
  5. C++ 运算符全解析:类型、示例与示例程序
  6. C++ 类与对象实战指南:封装、构造函数、析构函数与访问控制
  7. C++ Struct 与 Class 核心差异、语法及最佳实践
  8. 精通 C# 继承与多态:实战代码示例详解
  9. C# 抽象类实战教程:从定义到派生的完整代码示例
  10. 理解 Python type() 与 isinstance():实战示例详解
  11. 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除
  12. Java BufferedReader 读取文件:实战指南与示例