本文共 2350 字,大约阅读时间需要 7 分钟。
序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。class Program { static void Main(string[] args) { //BinaryFormatter将对象序列化到文件中 People people=new People("唐孝辉",5000); using (FileStream wirter=new FileStream("本地文件",FileMode.Create,FileAccess.ReadWrite)) { BinaryFormatter bf1=new BinaryFormatter(); bf1.Serialize(wirter,people); } People newPeople = null; //BinaryFormatter将文件中的数据反序列化出来 using (FileStream reader=new FileStream("本地文件",FileMode.Open,FileAccess.ReadWrite)) { BinaryFormatter bf2=new BinaryFormatter(); newPeople=(People)bf2.Deserialize(reader); } Console.WriteLine(newPeople.Name+":"+newPeople.ID); Console.ReadKey(); } } [Serializable] public class People { public string Name { get; set; } public int ID { get; set; } public People(string name,int id) { this.Name = name; this.ID = id; } }
序列化:
1.得到一个存储对象的类型
2.创建一个写入文件流
3.定义要序列化的类型
4.调用序列化方法
反序列化:
1.定义一个装载对象的类型
2.创建一个读出文件流
3.定义要反序列化的类型
4.调用反序列化方法
BinaryFormatter类进行序列化和反序列化,以缩略型二进制格式写到一个文件中去,速度比较快,而且写入后的文件已二进制保存有一定的保密效果。标记为NonSerialized的其他所有成员都能序列化。
使用json序列化
//使用JavaScriptSerializer方式需要引入的命名空间,这个在程序集System.Web.Extensions.dll.中//using System.Web.Script.Serialization; class Program { static void Main(string[] args) { People people = new People("唐孝辉", 5000); JavaScriptSerializer js=new JavaScriptSerializer(); //序列化 string jsonData=js.Serialize(people); //反序列化: People newPeople = null; newPeople= js.Deserialize(jsonData); Console.WriteLine(newPeople.Name + ":" + newPeople.ID); Console.ReadKey(); } } [Serializable] public class People { public People() { } public string Name { get; set; } public int ID { get; set; } public People(string name,int id) { this.Name = name; this.ID = id; } }
转载地址:http://ecrxo.baihongyu.com/