博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中的序列化和反序列化详解
阅读量:6249 次
发布时间:2019-06-22

本文共 2125 字,大约阅读时间需要 7 分钟。

什么是序列化与反序列化???

序列化和反序列化,我们可能经常会听到,其实通俗一点的解释,序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。

序列化和反序列化的主要作用有:

  1、在进程下次启动时读取上次保存的对象的信息

  2、在不同的AppDomain或进程之间传递数据

  3、在分布式应用系统中传递数据

  .............

常见的序列化的方法:

  1、BinaryFormatter

  2、SoapFormatter

  3、XML序列化

用法:

  BinaryFormatter的用法大致如下:  

//BinaryFormatter将对象序列化到文件中 List
inputList = new List
() { "","","欢迎专注技术的程序袁来看看笔者的网店哦"}; using (FileStream fsWriter = new FileStream(@"gz168168.tmp",FileMode.Create,FileAccess.Write)) { BinaryFormatter bf = new BinaryFormatter(); //序列化 bf.Serialize(fsWriter, inputList); } //BinaryFormatter将文件中的数据反序列化出来 List
outputList = new List
(); using (FileStream fsReader = new FileStream(@"gz168168.tmp",FileMode.Open,FileAccess.Read)) { BinaryFormatter bf = new BinaryFormatter(); //反序列化 outputList = (List
)bf.Deserialize(fsReader); }

  XML序列化的用法大致如下: 

//xml序列化到test.xml文件中List
inputList = new List
() { "潮流时尚公子","http://gz168168.taobao.com"};using (FileStream fsWriter = new FileStream(@"test.xml",FileMode.Create,FileAccess.Write)){ XmlSerializer xs = new XmlSerializer(typeof(List
)); xs.Serialize(fsWriter, inputList);}//从test.xml文件中反序列化出来List
outputList = new List
();using (FileStream fsReader = new FileStream(@"test.xml",FileMode.Open,FileAccess.Read)){ XmlSerializer xs = new XmlSerializer(typeof(List
)); outputList = xs.Deserialize(fsReader) as List
;}

总结:

两个的用法大致如下:
序列化:
  1.得到一个存储对象的类型
  2.创建一个写入文件流
  3.定义要序列化的类型
  4.调用序列化方法
反序列化:
  1.定义一个装载对象的类型
  2.创建一个读出文件流
  3.定义要反序列化的类型
  4.调用反序列化方法
BinaryFormatter类进行序列化和反序列化,以缩略型二进制格式写到一个文件中去,速度比较快,而且写入后的文件已二进制保存有一定的保密效果。标记为NonSerialized的其他所有成员都能序列化。
采用xml序列化的方式只能保存public的字段和可读写的属性,对于private等类型的字段不能进行序列化。
二进制序列化的优点: 
  1. 所有的类成员(包括只读的)都可以被序列化;
  2. 性能非常好。
XML序列化的优点:
  1. 互操作性好;
  2. 不需要严格的二进制依赖;
  3. 可读性强
SoapFormatter微软淘汰了,,不能序列化泛型,这里就不多讲了。

转载于:https://www.cnblogs.com/zhaolizhe/p/6936567.html

你可能感兴趣的文章
纯CSS和Javascript实现的遮罩层
查看>>
python类型转换、数值操作
查看>>
关于Scalability的一些思考与疑问
查看>>
mongodb step by step
查看>>
一句话一个点
查看>>
深入浅出事件流处理NEsper(二)
查看>>
技术人生:如何做非正式的交流
查看>>
利用共享内存和信号灯集实现进程间同步一例
查看>>
类的基础
查看>>
Sql Server系列:使用Transact-SQL编程
查看>>
新增题目功能模块总结
查看>>
三、mono for android 学习:参考书籍
查看>>
javascript练习:8-10事件与this运算符
查看>>
Linux下SVN部署/安全及权限配置,实现web同步更新
查看>>
PHPSPY2013
查看>>
Android学习笔记(四)时钟、时间
查看>>
SQL SERVER 查询性能优化——分析事务与锁(二)
查看>>
动画实现实现上下滚动的TextView
查看>>
HDU-4461 The Power of Xiangqi 签到题
查看>>
方法线程SwingWorker的用法
查看>>