序列化就是把一个对象转换为可以保存的形式,以利于保存和传输
反序列化就是把这种可保存的形式恢复为内存中的对象
.net提供了两种序列化的方法
1,二进制序列化 可以保留一个对象的所有的数据
对于应用程序不同调用之间保留对象状态很有用
二进制序列化 使用BinaryFormatter
例:
MyClass me = new MyClass(24, 1.76);
me.Name = "Ralph";
反序列化就是把这种可保存的形式恢复为内存中的对象
.net提供了两种序列化的方法
1,二进制序列化 可以保留一个对象的所有的数据
对于应用程序不同调用之间保留对象状态很有用
二进制序列化 使用BinaryFormatter
例:
MyClass me = new MyClass(24, 1.76);
me.Name = "Ralph";
//
序列化
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.txt", FileMode.Create,
Stream stream = new FileStream("MyFile.txt", FileMode.Create,
FileAccess.Write, FileShare.None);
formatter.Serialize(stream, me);
stream.Close();
formatter.Serialize(stream, me);
stream.Close();
//
反序列化
stream = new FileStream("MyFile.txt", FileMode.Open);
MyClass metoo = (MyClass)formatter.Deserialize(stream);
stream.Close();
把类对象me序列化,并保存在文件MyFile.txt中,它序列化了对象中的所有
MyClass metoo = (MyClass)formatter.Deserialize(stream);
stream.Close();
把类对象me序列化,并保存在文件MyFile.txt中,它序列化了对象中的所有
字段private public 和 protected,即反序列化后所有的 字段值是不变的
2,XML序列化 仅序列化公共属性和字段,而且不保留类型信息
不同系统之间的共享数据很有用
XML序列化 XmlSerializer
例:
MyClass me = new MyClass(24, 1.76);
me.Name = "Ralph";
2,XML序列化 仅序列化公共属性和字段,而且不保留类型信息
不同系统之间的共享数据很有用
XML序列化 XmlSerializer
例:
MyClass me = new MyClass(24, 1.76);
me.Name = "Ralph";
//
序列化
XmlSerializer srl = new XmlSerializer(typeof(MyClass));
StreamWriter wrt = new StreamWriter("MyFile.xml");
srl.Serialize(wrt, me);
wrt.Close();
StreamWriter wrt = new StreamWriter("MyFile.xml");
srl.Serialize(wrt, me);
wrt.Close();
//
反序列化
StreamReader rdr = new StreamReader("MyFile.xml");
MyClass notme = (MyClass)srl.Deserialize(rdr);
rdr.Close();
把类对象me序列化,并保存在文件MyFile.xml中,但它与二进制序列化不同
MyClass notme = (MyClass)srl.Deserialize(rdr);
rdr.Close();
把类对象me序列化,并保存在文件MyFile.xml中,但它与二进制序列化不同
的是它只序列化了对象中的public字段,既反序列化后只 有public字段的值
是不变的