C#中的序列化和反序列化

序列化:是将对象的状态存储到特定存储介质的过程,也可以说是将对象状态转换为可保持或传输的格式的过程。
上面的解释是官方定义,大白话解释就是,将对象以二进制的方式存储在文件中,如果简简单单的将一些数据或者内容存储到文件中的话,很好实现,直接使用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.txt",FileMode.Create)){BinaryFormatter bf = new BinaryFormatter();bf.Serialize(fs,slist);Console.WriteLine("序列化成功");}}

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


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

static void FanXulie() { 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);}}}

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

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

欢迎关注微信公众号:《雄雄的小课堂》呦。

**

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS中的JSON

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><!--如果需要兼容IE7及以下的JSON操作&#xff0c;则可以通过引入一个外部的js文件来处理--><script type"text/javascript" src"js…

关于勒索病毒 Ransom:Win32.WannaCrypt 解决方案的最后一次说明

2017/5/12 晚&#xff0c;勒索软件 Ransom:Win32.WannaCrypt 大面积暴发。比病毒爆发更火的&#xff0c;则是各类关于此病毒的新闻、解决方法在朋友圈等社交媒体的爆发。 其中&#xff0c;有主观善意但客观一知半解的指导&#xff0c;更有夹带私货的安全软件商携各类工具的广告…

maven的三种packaging方式

pom是maven依赖文件 jar是java普通项目打包 war是java web项目打包 pom&#xff1a;打出来可以作为其他项目的maven依赖&#xff0c;在工程A中添加工程B的pom&#xff0c;A就可以使用B中的类。用在父级工程或聚合工程中。用来做jar包的版本控制。 jar包&#xff1a;通常是开发…

C#中的序列化和反序列化案例

序列化&#xff1a;是将对象的状态存储到特定存储介质的过程&#xff0c;也可以说是将对象状态转换为可保持或传输的格式的过程。上面的解释是官方定义&#xff0c;大白话解释就是&#xff0c;将对象以二进制的方式存储在文件中&#xff0c;如果简简单单的将一些数据或者内容存…

浅谈MySQL的B树索引与索引优化

转载自 浅谈MySQL的B树索引与索引优化 MySQL的MyISAM、InnoDB引擎默认均使用B树索引&#xff08;查询时都显示为“BTREE”&#xff09;&#xff0c;本文讨论两个问题&#xff1a; 为什么MySQL等主流数据库选择B树的索引结构&#xff1f; 如何基于索引结构&#xff0c;理解常…

.NET特性:异步流

自从VB/C#开始支持async/await后&#xff0c;开发者一直在期待异步版本的IEnumerable。但直到C# 7和ValueTask发布前&#xff0c;从性能的角度来看这一要求几乎是不可能实现的。 在老版本C#中&#xff0c;开发者每次使用await时都需要进行内存分配。如果要枚举10,000个项&…

MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established

Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45, 5.6.26 and 5.7.6 requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing appli…

优秀学生专栏——孙珩发

继优秀学生董超同学之后的孙珩发同学的回访录&#xff0c;孙珩发同学于今年5月份毕业&#xff0c;是一个非常非常懂事的孩子&#xff0c;比如让他帮忙拿一下水杯&#xff0c;一般的同学都是直接给你拿杯子过来&#xff0c;而孙珩发同学可不是&#xff0c;他会将水杯里面接满水&…

Java并发编程包中atomic的实现原理

转载自 Java并发编程包中atomic的实现原理 这是一篇来自粉丝的投稿&#xff0c;作者【林湾村龙猫】最近在阅读Java源码&#xff0c;这一篇是他关于并发包中atomic类的源码阅读的总结。Hollis做了一点点修改。 引子 在多线程的场景中&#xff0c;我们需要保证数据安全&#…

优秀学生专栏——王浩

今天继续回访优秀学生王浩&#xff0c;王浩是班级里学习最好的同学&#xff0c;就业的时候也是最早入职的&#xff0c;目前所处岗位是开发&#xff0c;最近在北京出差。企业多次向学校表扬王浩同学&#xff0c;以下是王浩同学的简单回访&#xff1a;想对学弟学妹说些什么&#…

.NET Framework 4.7正式发布

以前.NET Framework 4.7是随Windows 10 Creators Edition一并提供的&#xff0c;现在它已经正式发布&#xff0c;这意味着使用旧版本Windows的用户现在也能安装它了。.NET Framework 4.7通过Windows 10 Anniversary Update发布&#xff0c;支持Windows 7 SP1及以上版本&#xf…

Spring XML中如何使用 符号,比如数据库MySQL连接

<property name"url" value"jdbc:mysql://localhost:3306/spring?useUnicodetrue&amp;characterEncodingutf-8&amp;useSSLfalse"></property>使用&amp; 代替&符号&#xff0c;注意后面的分号

动态网站初识体验

一、静态网站的局限性&#xff1a; 1.无法实现交互功能 2.无法及时对页面的更新 二、动态网页&#xff1a; 1.可以根据不同的操作或者输入&#xff0c;返回不同的网页。 三、B/S&#xff1a;&#xff08;浏览器/服务器&#xff09; 程序完全部署在服务器上&#xff0c;用户通过…

如何高效排查系统故障?一分钱引发的系统设计“踩坑”案例

转载自 如何高效排查系统故障&#xff1f;一分钱引发的系统设计“踩坑”案例 背景说明 某日&#xff0c;做产品X的开发接到客户公司电话&#xff0c;说是对账出了1分钱的差错&#xff0c;无法处理。本着“客户第一”的宗旨&#xff0c;开发立马上线查看情况。查完发现&#…

JWT(JSON web token)

1.什么是JWT JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally sign…

优秀学生专栏——李浩然

今天回访的同学是李浩然同学&#xff0c;李浩然同学不光长得帅&#xff08;下面有照片哦&#xff09;&#xff0c;技术还过硬&#xff0c;今年5月份毕业的&#xff0c;目前从事教学工作&#xff0c;自从工作以来&#xff0c;企业曾多次向学校表扬李浩然同学&#xff0c;下面是对…

@ResponseBody导致的返回值中文乱码

新人学习springMVC开发框架&#xff0c;用到ajax 通过 ResponseBody 来获取返回值。 不得不说 ResponseBody的功能很强大&#xff0c;可以直接将返回类打包成json格式省却了很多事&#xff0c; 但是如果返回值是String类型的话&#xff0c;就会出现中文乱码问题&#xff0c;自…

一步步学习EF Core(1.DBFirst)

前言 很久没写博客了,因为真的很忙,终于空下来,打算学习一下EF Core顺便写个系列, 今天我们就来看看第一篇DBFirst. 本文环境:VS2017 Win7 .NET Core1.1 EF Core1.1.2 正文 这里我们不讨论是用DBFirst好,还是CodeFirst高端..各有各自的用处和适用场景.. 我们单纯的只是…