序列化:就是将类的对象(字段以及数值),以文本的形式保存为文件
反序列化:创建相同的对象,然后将文本中的数值,重新赋值给对象的字段
[Serializable]//指示一个类可以序列化,但不能被继承
public class Person{
Private string _Name;
Private int _Age;
public string name{
get{return _Name;}
set{_Name=value;}
}
public int Age{
get{return _Age;}
set{_Age=value;}
}
public Person(string name,int age){
_Name=name;
_Age=age;
}
}
using System.IO;
using System.Runtime.Serialization.Formatters.Binary; //序列化命名空间
public class Demo{
private string strFilePath=@"E:\abc.txt";
///<summary>
///对象的序列化
///</summart>
public void Test1(){
Person p=new Person("张三",30);
if(File.Exists(strFilePath)){
using(FileStream fs=new FileStream(strFilePath,FileMode.OpenOrCreate)){
BinaryFormatter bf=new BinaryFormatter();
bf.Serialize(fs,p);//第一个是文本流,第二个是序列化对象,把对象数据写入流中
//BinaryFormatter暂存对象方法实例化,Serialize()序列化方法
}
}
}
///<summary>
///对象的反序列化
///</summart>
public void Test2(){
Person p=null;
if(File.Exists(strFilePath)){
using(FileStream fs=new FileStream(strFilePath,FileMode.OpenOrCreate)){
BinaryFormatter bf=new BinaryFormatter();
p=bf.Deserialize(fs) as Person;//Deserialize反序列化方法
}
}
}
static void Main(string[] args){
Demo obj=new Demo();
obj.Test1();
obj.Test2();
}
}