zoukankan      html  css  js  c++  java
  • C#中的序列化与反序列化

    眼看XX鸟的课程关于C#的知识点就要学完了,翻看网络中流传的教程还是发现了一个课程中没有讲到的知识点:序列化与反序列化

    无奈还是了解一下并操作一番,以备后用吧

    介绍:就是将对象信息转化为二进制信息以便于存储及在网络间的传输

    看来最大的作用还是用来网络传输用的多

    先来个自定义的类,这样才有能够有序列化的对象啊

     1 //标识该类可被序列化
     2     [Serializable]
     3     public class Person 
     4     {
     5         private string _name;
     6 
     7         public string Name
     8         {
     9             get { return _name; }
    10             set { _name = value; }
    11         }
    12 
    13     }

    看到[Serializable]([sɪərəlaɪ'zəbl])百度之得其意思:没错,就是序列化的意思+_+

    需要将[Serializable]放到你要序列化的类前面,不然的话是不能序列化的

    如果序列化的对象的类前面没有[Serializable]系统会抛出异常

    创建好要序列化的类之后,我们在测试类中实现它

    1  Person p = new Person();
    2             p.Name = "张三";
    3             //开始序列化
    4             using (FileStream fs = new FileStream(@"C:UsersJackDesktopobject.txt", FileMode.OpenOrCreate, FileAccess.Write))
    5             {
    6                 BinaryFormatter bf = new BinaryFormatter();
    7                 bf.Serialize(fs, p);
    8             }
    9             Console.WriteLine("序列化成功!");

    我们看到执行序列化的方法时使用的BinaryFormatter类,需要引入命名空间

    using System.Runtime.Serialization.Formatters.Binary;

    好长的命名空间,那是记住这个类吧-BinaryFormatter([ˈbaɪnəri]['fɔ:mætə])然后使用组合键:Shift+Alt+F10 回车

    BinaryFormatter对象的Serialize()方法

    文件流和对象参数

    生成了这么一堆人基本上看不懂的乱码,反正机器能看懂就行了(*^__^*) 嘻嘻……

    ====假设我们把序列化好的文件打包发给另一个人,另外一个人怎么用呢?没错,就是反序列化

    假设另外的那个人已经有Person类了

     Person p = null;
                using (FileStream fs = new FileStream(@"C:UsersJackDesktopobject.txt", FileMode.OpenOrCreate, FileAccess.Read))
                {
                    BinaryFormatter bf = new BinaryFormatter();
                    //需要将Object类型强转Person类型
                    p = (Person)bf.Deserialize(fs);
                    Console.WriteLine("反序列化成功!");
                    Console.WriteLine(p.Name);
                }

    反序列化的时候使用BinaryFormatter对象的Deserialize方法就可以了

    【来自 乐智的菜园子:www.cnblogs.com/AIThink 亲们,码字不容易,转载请注明出处。】

  • 相关阅读:
    day08
    day07
    day06
    day06
    day05
    第三次作业
    第三次作业
    第二次作业
    java 数字和日期处理
    jsp文件导包
  • 原文地址:https://www.cnblogs.com/AIThink/p/4937937.html
Copyright © 2011-2022 走看看