c#对象序列化(二进制序列化)BinaryFormatter
对象序列化(二进制序列化)BinaryFormatter
对象序列化是将对象(比如Person对象)转换为二进制数据(字节流)
作用
对象在程序重启、操作系统重启会造成对象的消失,有时退出函数范围等
都可能造成对象的消失
可以写入文件,数据库表等,较麻烦
可以将集合,对象直接存起来,就是序列化
只能针对对象的字段进行序列化。
反序列化相反
序列化
bf.Serialize
List<int> myInts = new List<int>{ 1, 2, 4, 5, 7 };
BinaryFormatter bf = new BinaryFormatter();
using (FileStream fs = new FileStream
("wsw.wsw",FileMode.CreateNew))
{
bf.Serialize(fs, myInts);
}
反序列化
bf.Deserialize
BinaryFormatter bf = new BinaryFormatter();
using (FileStream fs=File.Open("wsw.wsw",FileMode.Open))
{
List<int> myInts = (List<int>)bf.Deserialize(fs);
foreach (int myInt in myInts)
{
Console.WriteLine(myInt);
}
}
一个对象想被序列化,必须在类的上方打上[Serializable]
类内的成员也必须标记可序列化[Serializable]
父类也必须标记可序列化[Serializable]
字段不想被序列号进字节流[NonSerialized]
序列化只序列化字段(状态,不序列化方法)
//反序列化的时候需要引用被序列化的对象的类型所在的程序集。
将一个复杂的对象转换流,方便我们的存储与信息交换