命名空间 System.Runtime.Serialization.Formatters.Binary;
序列化:将对象转换为二进制
反序列化:将二进制转换为对象
目的:传输数据。因为数据是以二进制的形式进行传输的。
序列化步骤
1,对需要序列化的类,标记为可序列化。在类的上方,打上标记 [Serializable],如下 Person 类:
[Serializable] public class Person { private string _name; public string Name { get { return _name; } set { _name = value; } } private int _age; public int Age { get { return _age; } set { if (value >= 0) { _age = value; } else { _age = 0; } } } }
2,实例化,序列化对象。
//将P对象传输到其他设备 Person p = new Person(); p.Name = "张三"; p.Age = 20; using (FileStream fsWrite = new FileStream(@"C:\Users\Bluesummer\Desktop\序列化和反序列化.txt", FileMode.OpenOrCreate, FileAccess.Write)) { //实例化序列化对象 BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fsWrite, p); //序列化后即执行写操作 } Console.WriteLine("序列化完毕"); Console.ReadKey();
3,反序列化
接收二进制,反序列化为对象 Person p; using (FileStream fsRead = new FileStream(@"C:\Users\Bluesummer\Desktop\序列化和反序列化.txt", FileMode.OpenOrCreate, FileAccess.Read)) { //实例化序列化对象 BinaryFormatter bf = new BinaryFormatter(); p = (Person)bf.Deserialize(fsRead); //object 强制转换成 Person 类型 } Console.WriteLine(p.Name); Console.WriteLine(p.Age); Console.ReadKey();