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 亲们,码字不容易,转载请注明出处。】

  • 相关阅读:
    CF 461B Appleman and Tree
    POJ 1821 Fence
    NOIP 2012 开车旅行
    CF 494B Obsessive String
    BZOJ2337 XOR和路径
    CF 24D Broken robot
    POJ 1952 BUY LOW, BUY LOWER
    SPOJ NAPTIME Naptime
    POJ 3585
    CF 453B Little Pony and Harmony Chest
  • 原文地址:https://www.cnblogs.com/AIThink/p/4937937.html
Copyright © 2011-2022 走看看