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.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);}}}

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

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

温馨提示

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

往期内容更精彩哦~

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

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

相关文章

浅谈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个项&…

优秀学生专栏——孙珩发

继优秀学生董超同学之后的孙珩发同学的回访录&#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…

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

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

优秀学生专栏——李浩然

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

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

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

ASP.NET Core改进了.NET Framework中的字符串处理

显然Microsoft开发人员和管理人员并没有表达清楚&#xff0c;事实上ASP.NET Core 2.0将会得到整个.NET Framework的支持。当前的更改只实现了在ASP.NET上提供.NET Core&#xff0c;这是为了便于开发而采取的一个临时步骤。对此&#xff0c;在ASP.NET Core预览发行声明中给出了如…

阿里P9谈程序员程序员的青春饭

转载自 阿里P9谈程序员程序员的"青春饭" 导读&#xff1a;你是否曾经认真思考过——毕业3-5年、10年&#xff0c;乃至更久后&#xff0c;我们希望成为什么样的人&#xff1f;作为一名技术人&#xff0c;我们要如何规划自己的职业发展生涯&#xff1f;网上热议的“…

优秀学生专栏——孙振涛

今天继续回访17级优秀毕业生&#xff0c;今天回访的同学是孙振涛同学&#xff0c;孙振涛在班内一直都是比较安稳守纪律&#xff0c;上学期间未违反过任何纪律&#xff0c;毕业之后自己创业合伙开了一个互联网公司&#xff0c;目前公司正在走上正轨&#xff0c;以下是对孙振涛同…

不可思议黑科技,Xamarin移动开发新时代

黑科技&#xff01;新一代Xamarin竟然可以将.NET代码原生编译成&#xff1a;Jar包供Java原生调用、swift类库、obj-c类库、C类库 供目标平台传统代码直接调用 之前和很多朋友聊到Xamarin觉得确实不错&#xff0c;原生性能&#xff0c;研发效率提升2倍&#xff0c;研发成本降低5…

这可能是最生动的加密相关科普文章

转载自 这可能是最生动的加密相关科普文章 谁都不想在通信过程中被别人“窃取”小秘密。本文借助一对情侣与八卦女、猥琐男的斗智故事&#xff0c;为大家讲述科普密码学基础知识。既有料又有趣&#xff0c;深入浅出&#xff0c;相信你会喜欢。 一、背景 事情是这样的&#…

学习心得——王梦茹

18级青鸟1班王梦茹编程其实是一门既枯燥又简单有乐趣的一门技术&#xff0c;这要根据个人而言&#xff0c;也许每个人来这里学习编程的初衷都是不一样的&#xff0c;但是你可以去慢慢的发现编程中的乐趣&#xff0c;兴趣是最大的老师&#xff0c;对感兴趣的事学习起来往往是事半…

JS中函数的返回值

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>01_数据类型</title> </head> <body> <!-- 1. 分类(2大类)* 基本(值)类型* Number: 任意数值* String: 任意文本* Boolean: true…

学习心得——李嫣然、逯广捷

18级青鸟1班李嫣然、逯广捷我觉得学习中最基本的一点&#xff0c;就是主动&#xff0c;学习是自己的事情&#xff0c;只有积极主动地学习才能感受到学习中的乐趣&#xff0c;要是越烦越不想学那肯定就是更学不会&#xff0c;这样周而复始最后就是什么都不会&#xff0c;所以说学…

一步步学习EF Core(2.事务与日志)

前言 上节我们留了一个问题,为什么EF Core中,我们加载班级,数据并不会出来 其实答案很简单,~ 因为在EF Core1.1.2 中我们在EF6.0中用到的的延迟加载功能并没有被加入,不过在EF Core 2.0中,这个功能将回归 而且这个功能是否需要被加入进去,社区也在激烈的讨论当中,有兴趣的可…