C# 串行【序列化】和解串【反序列化】
一. 什么是序列化和反序列话呢?
相信我们做程序的都会遇到这种情况,需要将C#中某一个结构很复杂的类的对象存储起来,或者通过网路传输到远程的客户端程序中去, 这时候用文件方式或者数据库方式存储或者传送就比较麻烦了,这个时候,最好的办法就是使用串行和解串。其实串行就是我们所说的序列化【Serialization】,而解串就是反序列化序列化Deserialization。
二.序列化有那几种:
BinaryFormatter
SoapFormatter
XmlSerializer
三.示例:
使用BinaryFormatter序列化和反序列化;
序列化:
FileStream fs = new FileStream("SerializedDate.data", FileMode.Create);
BinaryFormatter bf = New BinaryFormatter();
MyClass mc = new MyClass();
bf.Serialize(fs, mc);
fs.Close();
反序列化:
FileStream fs = new FileStream("SerializedDate.data", FileMode.Open);
BinaryFormatter bf = New BinaryFormatter();
MyClass mc = new MyClass();
mc = (MyClass)bf.Deserialize(fs);
fs.Close();
注意:
序列化的对象必须是具有【Serializable】标记的;即:MyClass类必须加【Serializable】标记;
bf.Serialize(fs, mc);//序列号
bf.Deserialize(fs); //反序列化
其他几种序列化方式思路一样;