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
二进制的关键字: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
相关文章推荐
- C#实现对象的Xml格式序列化及反序列化
- C#实现对象的Xml格式序列化及反序列化
- C#序列化和反序列化
- C#序列化和反序列化开发者在线 Builder.com.cn 更新时间:2008-09-04
- C#中的快速序列化和反序列化对象
- C#中XML序列化和反序列化初探
- c#实现对象的xml格式序列化及反序列化
- C#实现对象的Xml格式序列化及反序列化
- C# 实现复杂对象的序列化与反序列化[收藏此页] [打印]【IT168知识库】
- C#序列化和反序列化
- C#实现对象的Xml格式序列化及反序列化
- C#强化系列文章七:序列化和反序列化
- C#实现对象的Xml格式序列化及反序列化
- C#实现对象的Xml格式序列化及反序列化
- C#强化系列文章七:序列化和反序列化
- C#实现对象的Xml格式序列化及反序列化
- C#实现对象的Xml格式序列化及反序列化
- C#实现对象的Xml格式序列化及反序列化
- 深入C#学习系列一:序列化(Serialize)、反序列化(Deserialize) [转]
- C#序列化和反序列化