您的位置:首页 > 编程语言 > C#

C#的序列化和反序列化

2014-06-06 14:52 197 查看
序列化就是把一个对象保存到一个文件或数据库字段中去,而反序列化则是把这个文件再转化成原来的对象来使用,他的特点就是保存为二进制对象(BIN文件),优点就是容易存储和取出。我们也可以理解为序列化就是存储,反序列化就是取出。

二进制的关键字:BinaryFormatter

序列化关键字:Serialize

反序列化关键字:Deserialize

首先我们定义一个可序列化的类和不可序列化的字段

[Serializable]

class TestInfo

{

public string name;

public int age;

[NonSerialized]

public string sex = "男";

}

下面是一组控件的方法,用来演示序列化存储和反序列化取出

public Form1()

{

InitializeComponent();

}

private void button2_Click(object sender, EventArgs e)

{

TestInfo ts = new TestInfo();

ts.sex = "女";

//打开文件流

FileStream fs = new FileStream("c:/DPanFU/test.bin", FileMode.Open);

//二进制方式

BinaryFormatter bf = new BinaryFormatter();

//反序列化打开的文件流

ts =(TestInfo)bf.Deserialize(fs);

this.textBox1.Text = ts.age + "\n" + ts.name+"\n"+ts.sex;

}

private void button1_Click_1(object sender, EventArgs e)

{

//需要在该类标记为可序列化(serializble)

TestInfo ts = new TestInfo();

ts.name = "Coyote";

ts.age = 23;

//创建文件流

FileStream fs = new FileStream("c:/DPanFU/test.bin", FileMode.Create);

//二进制方式

BinaryFormatter bf = new BinaryFormatter();

//序列化存储对象

bf.Serialize(fs, ts);

//关闭流

fs.Close();

}

从存取的bin文件的信息我们可以看出,标记为[NonSerialized]的字段的值总是为null
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: