c#序列化和反序列化

c#序列化和反序列化

ID:34722014

大小:144.99 KB

页数:12页

时间:2019-03-10

c#序列化和反序列化_第1页
c#序列化和反序列化_第2页
c#序列化和反序列化_第3页
c#序列化和反序列化_第4页
c#序列化和反序列化_第5页
资源描述:

《c#序列化和反序列化》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C#序列化与反序列化学习最近为了换一份新工作,准备了不少笔试题。从笔试当中自己发现了不少基础知识的盲点。很庆幸这样的机会,可以让自己对于基础知识的理解又上升一个台阶。此文介绍C#里面的序列化与反序列化的知识,如果你是大鸟,请口下留情。 首先,什么是序列化与反序列化呢?序列化就是将对象的状态信息转换为可以存储或传输形式的过程。其实就是将对象持久化,比如说把对象保存为二进制或者是XML的方式。可以将对象序列到流、磁盘、内存和网络等等。相反,反序列化则是将存储或传输形式转换为对象的过程。 那么,运用序列化的好处又是什么呢?(1)以某种

2、存储形式(二进制或者是XML等)使对象持久化。序列化和反序列化用来保存内存中的数据,它不是C#中独有的技术,比如win7的休眠就是该技术的应用,在C#程序中可以用来保存对象,和对象当前状态,下次打开时通过反序列化获得,一般用在服务器启动(反序列化)和关闭(序列化)时保存数据。(2)使对象的传递更加容易,比如你用ajax向服务器请求信息,服务器可以直接将model对象通过序列化来输出json字符串,也可以通过反序列化将你传过去的json字符串组装成对象,就免去了拼字符串和解析字符串的过程。 最后,在.Net里面怎么实现序列化技术?

3、(1)二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。(2)XML序列化仅序列化公共属性和字段,且不保持类型保真度。当您要提供或使用数据而不限制使用该数据的应用程序时,这一点是很有用的。由于XML是一个开放式标准,因此,对于通过Web共享数据而言,这是一个很好的选择。SOAP同样是一个开放式标准,这使它也成为一个颇具吸引力的选择。----------以上内容摘自百科的内容与百度的内容. 关

4、于这两点的概念,我自己也不大明白是什么意思?保持类型保真度,一开始我是认为是成员变量的类型,以为用XML序列化的话,都会变成是string的类型,但是发现根本不是这样。成员变量的类型都能保存,那这里说的类型保真类到底是指什么?XML序列化仅序列化公共属性和字段,但是我用私有字段,发现也一样可以序列化。我是定义一个私有字段,然后通过公共属性来给它赋值,然后在反序列化里面通过公共属性来取私有字段的内容,发现是可以的,不知道是不是我的理解有什么问题? 1#针对二进制序列化与反序列化,.Net是使用BinaryFormatter对象来进

5、行序列化与反序列化。一般的实现方法,是把可序列化的类用特征类[Serializable]来标志,当然,不想序列类的成员,可以用[NonSerialized]特征类来标志。类里面的所有成员变量都能被序列化。然后实例化命名空间System.Runtime.Serialization.Formatters.Binary下的BinaryFormatter对象,借助其Serialize方法来实现序列化与Deserialize方法来实现反序列化。usingSystem;usingSystem.IO;usingSystem.Collectio

6、ns;usingSystem.Runtime.Serialization.Formatters.Binary;usingSystem.Runtime.Serialization;[Serializable]publicclassSerializeObject{publicintID{get;set;}publicstringUserName{get;set;}publicstringPassword{get;set;}[NonSerialized]publicstringnotSerialize;}publicclassApp{

7、[STAThread]staticvoidMain(){Serialize();Deserialize();}staticvoidSerialize(){SerializeObjectserializeObject=newSerializeObject();serializeObject.ID=1;serializeObject.UserName="csdbfans";serializeObject.Password="csdbfans";serializeObject.notSerialize="博客园";FileStream

8、fs=newFileStream("DataFile.dat",FileMode.Create);BinaryFormatterformatter=newBinaryFormatter();try{formatter.Serialize(fs,serialize

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。