序列化和反序列化

命名空间 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();

发表评论

Powered by WordPress | Theme Revised from Doo

苏ICP备18047621号

Copyright © 2017-2024 追光者博客