c#对象序列化(二进制序列化)BinaryFormatter【转】

c#对象序列化(二进制序列化)BinaryFormatter

<:section>

对象序列化(二进制序列化)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]

 

序列化只序列化字段(状态,不序列化方法)

//反序列化的时候需要引用被序列化的对象的类型所在的程序集。

 

将一个复杂的对象转换流,方便我们的存储与信息交换

原文地址:https://www.cnblogs.com/zhouyunbaosujina/p/3127081.html