C#序列化与反序列化(Serialize,Deserialize)实例详解

页面导航:首页 > 软件编程 > C#教程 > C#序列化与反序列化(Serialize,Deserialize)实例详解

C#序列化与反序列化(Serialize,Deserialize)实例详解

来源:互联网 作者:脚本宝典 时间:2015-06-09 13:02 【

这篇文章主要介绍了C#序列化与反序列化(Serialize,Deserialize)的方法,实例分析了C#序列化与反序列化的常见技巧,需要的朋友可以参考下

本文实例讲述了C#序列化与反序列化(Serialize,Deserialize)实现方法。分享给大家供大家参考。具体分析如下:

如果要保存运行程序过程的数据要么保存到数据库中,要么新建一个普通的文件,然后把数据保存进去.但是这两者有个缺点就是,不能把原有数据的结构也保存进去.比如一个类中的字段值保存进去后再读取出来必须再解析下才行.序列化技术让你省去了解析的过程.保存后再读取时直接得到一个class

序列化的方式有三种:BinaryFormatter,SoapFormatter,XmlSerializer

1.BinaryFormatter

保存成二进制数据流.用法示例:

?
1
2
3
4
5
6
7
8
9
10
11
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
//如果要想保存某个class中的字段,必须在class前面加个这样attribute(C#里面用中括号括起来的标志符)
public class Person
{
public int age;
public string name;
[NonSerialized] //如果某个字段不想被保存,则加个这样的标志
public string secret;
}

序列化:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
classProgram
{
 staticvoid Main(string[] args)
{
Person person = newPerson();
person.age = 18;
person.name = "tom";
person.secret = "i will not tell you";
FileStream stream =newFileStream(@"c:\temp\person.dat",FileMode.Create);
BinaryFormatter bFormat =newBinaryFormatter();
bFormat.Serialize(stream, person);
stream.Close();
}

反序列化:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
classProgram
{
staticvoid Main(string[] args)
{
Person person = newPerson();
FileStream stream =newFileStream(