C#序列化与反序列化(Serializable and Deserialize)

C#序列化和反序列化有3种方式。我们可以在其中决定一个类中哪些属性序列化或者不序列化,可以通过使用NonSerialized属性标记成员变量来防止它们被序列化。
C#中常见的序列化的方法主要是:BinaryFormatter、SoapFormatter、XML序列化。
序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。
一、BinaryFormatter序列化方式
在这里插入图片描述在这里插入图片描述

上面贴了一个使用窗口序列化和反序列化显示的例子。

二、SoapFormatter序列化方式
与BinaryFormatter序列化方式类似,只需要把IFormatter formatter= new BinaryFormatter()改成IFormatter fromatter= new SoapFormatter(),并且程序集System.Runtime.Serilization.Formatters.Soap.dll(.net自带的)
序列化之后的文件是Soap格式的文件(简单对象访问协议(Simple Object Access Protocol,SOAP),是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。

三、XML序列化方式
XmlSerializer formatter = new XmlSerializer(typeof(test));注意:采用xml序列化的方式只能保存public的字段和可读写的属性,对于private等类型的字段不能进行序列化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值