.net實(shí)現(xiàn)序列化與反序列化實(shí)例解析
序列化與反序列化是.net程序設(shè)計(jì)中常見的應(yīng)用,本文即以實(shí)例展示了.net實(shí)現(xiàn)序列化與反序列化的方法。具體如下:
一般來說,.net中的序列化其實(shí)就是將一個(gè)對象的所有相關(guān)的數(shù)據(jù)保存為一個(gè)二進(jìn)制文件(注意:是一個(gè)對象)
而且與這個(gè)對象相關(guān)的所有類型都必須是可序列化的所以要在相關(guān)類中加上 [Serializable]特性
對象類型包括:對象本身包含的類型,父類
擁有需要的對象之后:
1.將對象轉(zhuǎn)換為二進(jìn)制數(shù)據(jù) 使用專門的對像進(jìn)行轉(zhuǎn)換 BinaryFormatter
2.將二進(jìn)制數(shù)據(jù)寫入到文件 FileSteam
反序列化則是把二進(jìn)制文件轉(zhuǎn)換為一個(gè)對象
示例代碼如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Person per;//將要被序列化的對象
Console.WriteLine("------序列化與反序列化------");
Console.WriteLine("是否讀取已經(jīng)序列化的對象per");
string str = Console.ReadLine();
if (str == "yes")
{
if (!File.Exists("save.bin"))
{
Console.WriteLine("你還沒有將per序列化");
return;
}
using (FileStream fs = new FileStream("save.bin", FileMode.Open))
{
BinaryFormatter bf = new BinaryFormatter();
per = bf.Deserialize(fs) as Person;//將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為per對象
per.SayHi();
Console.ReadLine();
}
}
else
{
per = new Person();
per.Name = "小李";
using(FileStream fs=new FileStream("save.bin",FileMode.Create))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs,per);//將per對象轉(zhuǎn)換成二進(jìn)制數(shù)據(jù),并保存。
Console.WriteLine("序列化成功");
Console.ReadLine();
}
}
}
}
[Serializable]
class Person
{
public string Name;
public void SayHi()
{
Console.WriteLine("hello {0}",Name);
}
}
}
相信本文實(shí)例對于大家進(jìn)一步理解.net的序列化與反序列化有一定的借鑒幫助作用。
相關(guān)文章
C# Socket網(wǎng)絡(luò)編程實(shí)例
這篇文章主要介紹了C# Socket網(wǎng)絡(luò)編程實(shí)例,分析了Socket網(wǎng)絡(luò)通信的原理與具體應(yīng)用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01

