C# 序列化和反序列化
(一)序列化
1、对象序列化标识
//在序列化前需要先将类标记
[Serializable]//对象可序列化标记
class Student
{
public string Name { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
public DateTime Birtheday { get; set; }
}
2、引入两个命名空间
using System.IO;
using System.Runtime.Serialization.Formatter.Binary; //runtime
3、(一)使用二进制格式化器
//【1】创建文件流
FileStream fs = new FileStream("objStudent.stu", FileMode.Create);
//【2】创建二进制格式化器
BinaryFormatter formatter = new BinaryFormatter();
//【3】调用序列化方法
formatter.Serialize(fs, objStudent);
//【4】关闭文件流
fs.Close();
new一个二进制格式化器后,调用Serialize 传入 ( 文件流, 对象 )
随后关闭文件流
使用二进制格式化器,生成的是二进制信息
(二)反序列化
//【1】创建文件流
FileStream fs = new FileStream("objStudent.stu", FileMode.Open);
//【2】创建二进制格式化器
BinaryFormatter formatter = new BinaryFormatter();
//【3】调用反序列方法
Student objStudent = (Student)formatter.Deserialize(fs);
//【4】关闭文件流
fs.Close();
流程和序列化大差不差,,先 创建文件流(读取对象) → new一个 格式化器 → (重点) 调用反序列方法时 要进行强转
总结:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现