序列化:是将对象的状态存储到特定存储介质的过程,也可以说是将对象状态转换为可保持或传输的格式的过程。

上面的解释是官方定义,大白话解释就是,将对象以二进制的方式存储在文件中,如果简简单单的将一些数据或者内容存储到文件中的话,很好实现,直接使用IO就可以,但是对象可就不一样了,我们可以通过序列化来实现,下面就展示一个序列化的案例:

首先新建一个Student类,需要注意的是,在类的上方要标识[Serializable],以表示该类可支持序列化操作。

[Serializable]
public class Student
{public int Id { get; set; }public string Name { get; set; }public string Sex { get; set; }public int Age { get; set; }public Student() { }public Student(string name,int age,string sex) {this.Name = name;this.Age = age;this.Sex = sex;}public void Say() {Console.WriteLine("姓名是:{0},年龄是:{1},性别是{2}",Name,Age,Sex);}}

接下来写一个测试类实现一下序列化:

        //序列化操作        static void TestXu(){         List<Student> slist = new List<Student>();Student stu1 = new Student("刘世豪",12,"男");Student stu2 = new Student("李宏洋", 18, "男");Student stu3 = new Student("钟立琦",19,"男");slist.Add(stu1);slist.Add(stu2);slist.Add(stu3);
using(FileStream fs = new FileStream(@"d:/test/test.btn",FileMode.Create)){            BinaryFormatter bf = new BinaryFormatter();bf.Serialize(fs,slist);Console.WriteLine("序列化成功");}}

执行一下,运行结果不出意外的话是:序列化成功,但是提醒你不要去看生成的那个文件,不信的话你就去看看。


反序列化:顾名思义就是与序列化相反,也就是从文件中将对象在还原回来。下面是代码案例:

//反序列化操作static void TestFanXu(){            using(FileStream fs = new FileStream(@"d:/test/test.txt",FileMode.Open)){BinaryFormatter bf = new BinaryFormatter();List<Student> slist = (List<Student>)bf.Deserialize(fs);foreach (Student stu in slist) {Console.WriteLine(stu.Name);}}}

输出的运行结果:
刘世豪
李宏洋
钟立琦

这就是序列化和反序列化操作的案例。

温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。

往期内容更精彩哦~

C#中的序列化和反序列化案例相关推荐

  1. 传递实体类对象_Java I/O 流之对象流中的序列化和反序列化

    一.概念 当两个进程远程通信时,彼此可以发送各种类型的数据. 无论是何种类型的数据,都会以二进制序列的形式在网络上传送.比如,我们可以通过 http 协议发送字符串信息:我们也可以在网络上直接发送 J ...

  2. fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...

    点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...

  3. python中常用的序列化模块_Python中的序列化和反序列化

    为什么要序列化 内存中的字典.列表.集合以及各种对象,如何保存到一个文件中. 设计一套协议,按照某种规则,把内存中的数据保存到文件中,文件是一个个字节序列.所以必须把数据额转换为字节序列,输出到文件, ...

  4. 谈谈:.Net中的序列化和反序列化

    序列化和反序列化相信大家都经常听到,也都会用, 然而有些人可能不知道:.net为什么要有这个东西以及.net Frameword如何为我们实现这样的机制, 在这里我也是简单谈谈我对序列化和反序列化的一 ...

  5. .Net 中关于序列化和反序列化Json的方法

    .Net SDK中关于序列化和反序列化Json的方法 项目中遇到和服务端交互时需要传递数据包为json格式的包,所以在服务端和SDK中都需要对json进行解析和组合的操作, 并且对一些复杂结构的jso ...

  6. js序列化与反序列化和C#中json序列化与反序列化

    序列化:将Object转换成JSON字符串 let data = JSON.stringify(obj); // 将JSON对象转化为JSON字符 let data = obj.toJSONStrin ...

  7. OWASP TOP 10(六)反序列化漏洞(序列化和反序列化、漏洞原理、PHP中的序列化和反序列化、魔术方法、Typecho_v1.0中的反序列化漏洞)

    文章目录 反序列化漏洞 一.概述 1. 序列化和反序列化 2. 序列化的目的 二.PHP中的序列化与反序列化 1. 概述 2. 示例序列化与反序列化 3. 反序列化漏洞 - PHP中的魔术方法 - T ...

  8. JAVA中JSON序列化和反序列化

    JAVA中JSON序列化和反序列化 1 FASTJSON的序列化和反序列化 1.1 主函数 1.2 自定义对象 2 GSON序列化和反序列化 2.1 主函数 2.2 自定义对象 总结 不同包序列化和反 ...

  9. php中的序列化与反序列化[喜悦原创]

    php中的序列化与反序列化 1.serialize() <===> unserialize(),这个大家用的最多, 老熟人了 session保存默认用的就是这个. 如果想存储对象,数组数据 ...

最新文章

  1. Python倒排索引函数
  2. 已知一个特殊字符的 unicode 编码值,如何在 ABAP 里打印出这个特殊字符?
  3. 摩托罗拉v8对讲机驱动软件_摩托罗拉数字机如何设置“个性”提示音
  4. 流程图神器——代码转流程图软件、在线流程图绘制软件
  5. tvs二极管5.0SMDJ24CA-H ISO7637 测试报告
  6. http中长连接与短连接的区别,和实现方式。
  7. C#编程打字指法练习
  8. 5G中大规模MIMO系统通信的若干分析
  9. 2019世界互联网大会 聚焦网络安全发展新动能新要求 最新等保测评机构名录发布10月版
  10. “用户体验及可用性测试”前三章:读书笔记
  11. java面试题干货51-95
  12. 江南大学计算机科学复试题目,2019江南大学计算机考研初试科目、参考书目、复试线...
  13. 如何在html页面上画一条渐变线
  14. pytorch学习之如何画损失函数曲线图
  15. RSA非对称加密解密概念
  16. ipad上html语言编辑,在 iPad 上键入和编辑文本的小技巧
  17. python机器学习算法-Chapter1
  18. jquery id选择器获取id值含有特殊字符的方法
  19. C语言简明教程,C语言简明教程
  20. vmware Dos声卡驱动安装说明

热门文章

  1. 题目 2285: [蓝桥杯][2018年第九届真题]螺旋折线(数论+思维)
  2. 操作系统习题——(习题二)
  3. mysql boolean_产品操作MySQL第7篇 – 运算符 – IS NULL
  4. word List35
  5. 蓝桥杯 递增三元组 二分
  6. 梯度下降:求线性回归
  7. Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes kmp + dp
  8. Codeforces Round #620 (Div. 2) E. 1-Trees and Queries 思维 + LCA
  9. CodeForces:1103(div1)1104(div2)
  10. NOIP2017洛谷P3953:逛公园(分层图最短路、dp、拓扑)