C#中的序列化与反序列化
眼看XX鸟的课程关于C#的知识点就要学完了,翻看网络中流传的教程还是发现了一个课程中没有讲到的知识点:序列化与反序列化
无奈还是了解一下并操作一番,以备后用吧
介绍:就是将对象信息转化为二进制信息以便于存储及在网络间的传输
看来最大的作用还是用来网络传输用的多
先来个自定义的类,这样才有能够有序列化的对象啊
//标识该类可被序列化
[Serializable]
public class Person
{
private string _name; public string Name
{
get { return _name; }
set { _name = value; }
} }
看到[Serializable]([sɪərəlaɪ'zəbl])百度之得其意思:没错,就是序列化的意思+_+
需要将[Serializable]放到你要序列化的类前面,不然的话是不能序列化的
如果序列化的对象的类前面没有[Serializable]系统会抛出异常

创建好要序列化的类之后,我们在测试类中实现它
Person p = new Person();
p.Name = "张三";
//开始序列化
using (FileStream fs = new FileStream(@"C:\Users\Jack\Desktop\object.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, p);
}
Console.WriteLine("序列化成功!");
我们看到执行序列化的方法时使用的BinaryFormatter类,需要引入命名空间
using System.Runtime.Serialization.Formatters.Binary;
好长的命名空间,那是记住这个类吧-BinaryFormatter([ˈbaɪnəri]['fɔ:mætə])然后使用组合键:Shift+Alt+F10 回车
BinaryFormatter对象的Serialize()方法

文件流和对象参数
生成了这么一堆人基本上看不懂的乱码,反正机器能看懂就行了(*^__^*) 嘻嘻……

====假设我们把序列化好的文件打包发给另一个人,另外一个人怎么用呢?没错,就是反序列化
假设另外的那个人已经有Person类了
Person p = null;
using (FileStream fs = new FileStream(@"C:\Users\Jack\Desktop\object.txt", FileMode.OpenOrCreate, FileAccess.Read))
{
BinaryFormatter bf = new BinaryFormatter();
//需要将Object类型强转Person类型
p = (Person)bf.Deserialize(fs);
Console.WriteLine("反序列化成功!");
Console.WriteLine(p.Name);
}
反序列化的时候使用BinaryFormatter对象的Deserialize方法就可以了
【来自 乐智的菜园子:www.cnblogs.com/AIThink 亲们,码字不容易,转载请注明出处。】
C#中的序列化与反序列化的更多相关文章
- Net中JSON序列化和反序列化处理(日期时间特殊处理)
0 缘由 笔者最近在web api端使用Json.Net进行序列化处理,而在调用端使用DataContractSerializer进行反序列化,遇到日期时间处理反序列化不成功[备注:笔者使用Net ...
- day5-python中的序列化与反序列化-json&pickle
一.概述 玩过稍微大型一点的游戏的朋友都知道,很多游戏的存档功能使得我们可以方便地迅速进入上一次退出的状态(包括装备.等级.经验值等在内的一切运行时数据),那么在程序开发中也存在这样的需求:比较简单的 ...
- 在net中json序列化与反序列化 面向对象六大原则 (第一篇) 一步一步带你了解linq to Object 10分钟浅谈泛型协变与逆变
在net中json序列化与反序列化 准备好饮料,我们一起来玩玩JSON,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法 Json语法规则 ...
- 浅谈C#中的序列化与反序列化
今天我利用这篇文章给大家讲解一下C#中的序列化与反序列化.这两个概念我们再开发中经常用到,但是我们绝大部分只用到了其中的一部分,剩下的部分很多开发人员并不清楚,甚至可以说是不知道.因此我希望通过这篇文 ...
- javaIO中的序列化和反序列化
javaIO中的序列化和反序列化 1.什么是序列化?它是来解决什么问题的 1.我们创建的对象,一般情况下在内存中,程序关闭,或者因为没有地址指向而导致垃圾回收 2.这样,我们的对象就会丢失 3.那么我 ...
- C#中JSON序列化和反序列化
有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...
- C#中的 序列化和反序列化
什么是序列化和反序列化? 序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用. 我想最主要的作用有: 1.在进程下次启动时读取上次保存的对象的 ...
- K:java中的序列化与反序列化
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?以下内容将围绕这些问题进行展开讨论. Java序列化与反序列化 简单来说Java序列化是指把Java对象转 ...
- Java中的序列化与反序列化
序列化定义 将对象转换为字节流保存起来,并在以后还原这个对象,这种机制叫做对象序列化. 将一个对象保存到永久存储设备上称为持久化. 一个对象要想能够实现序列化,必须实现java.io.Serializ ...
随机推荐
- photpshop渐变玩法_学习教程
- 模仿qq音乐播放字母效果
html <div class="cont"> <ul class="cont_ul" id="cont_ul"> ...
- javascript获取对象宽度和高度
标签元素的宽高值获取//绝对宽度Obj.offsetWidth//绝对高度Obj.offsetHeight 以下是获取窗口对象的宽高值.clientHeight 获取对象的高度,不计算任何边距.边 ...
- 欧几里德算法gcd及其拓展终极解释
这个困扰了自己好久,终于找到了解释,还有自己改动了一点点,耐心看完一定能加深理解 扩展欧几里德算法-求解不定方程,线性同余方程. 设过s步后两青蛙相遇,则必满足以下等式: (x+m*s)-(y+n ...
- python设计模式之观察者模式
观察者模式 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern).比如,当一个对象被修改时,则会自动通知它的依赖对象.观察者模式属于行为型模式. 观察者模式在状态检测和事件处 ...
- 在动态引用DLL-A中,当参数是个实体,而实体的属性在另一个DLL-B中。。我们需要得到A这个实体并将其赋值,并将赋值的实体传人DLL-A的方法中。
string strPath = HttpContext.Current.Server.MapPath("/开放式DLL"); DirectoryInfo df = new Dir ...
- java面试(毕业一年后准备换工作)
还记得一年前的今天,在网上投简历,找工作,当时找的工作的工作地点都在成都,其实自己挺想去外面工作几年的,如果毕业后就在成都工作,今后基本不可能去外省了, 所以刚好上海的一家外包公司来成都理工校招,导员 ...
- Maven插件开发
Maven为我们提供了丰富的插件资源,使得开发调试过程中非常方便,可以满足大多数场景下的需求.当然有时候,我们也需要根据需求定制自己的插件.下面是在开发Maven插件时的一点备忘录,具体的开发流程请G ...
- Chapter 2. OpenSSL的安装和配置学习笔记
Chapter 2. OpenSSL的安装和配置学习笔记 2.1 在linux上面安装OpenSSL我还是做点No paper事情比较在行,正好和老师的课程接轨一下.以前尝试过在Windows上面安装 ...
- mongodb教程
http://sheperd.blog.163.com/blog/static/19525511920119111149046/ http://www.cnblogs.com/oec2003/arch ...