zoukankan      html  css  js  c++  java
  • .NET中序列化(一)

    本人编程道行很浅,只有两三年的道行,所以本文的内容讲的不深入,只供给菜鸟们看看,所以老鸟们不要笑我,欢迎老鸟们指出问题,也欢迎新手们讨论。

    我写文章的目的有两个,1是想巩固消化自己所学的内容,2是能和广大的程序猿讨论。

    -------------------------------------------------废话分割线-------------------------------------------------

          大家都知道.NET中的对像中存着许多的状态(成员变量),当我们想把对象保存起来,我们就要通过数据库把数值存放起来,下次使用时在从数据库中把数值取出,重新赋值到对像上。开发人员就要编写一大串的机械式的代码,就不能把有效果的时间发在业务上。现在向大家介绍个对像序列化的功能,可以把对像序列化成二进制或soap格式的文件,当下次需要在用该对像的状态就可以直接反序列化该文件,生成对像。

      说了那么多,直接上例子吧。

      [Serializable]
    public class MyClass
    {
    public string Name
    {
    get;
    set;
    }


    public int Age
    {
    get;
    set;
    }
    }

    在对像上加个[Serializable]属性就是告诉编译器该类是可以被序列化的,

    对客户端还要使用有命名空间System.Runtime.Serialization.Formatters.Binary中的BinaryFormatter类,将MyClass 的对像序列化成二进制的文件流写入到文件中

    客户端例子

                MyClass my = new MyClass();
    my.Name = "凤姐";
    my.Age = int.MaxValue;
    System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();

    //创建一个文件流
    Stream stream = new FileStream(@"c:\MyClass.bin", FileMode.Create, FileAccess.Write);

    using (stream)
    {
    //这里就是进行序列化了
    formatter.Serialize(stream, my);
    }

    哈哈哈OK了,对像被序列化进去了。当你的程序闭关下次要用的时候就将c:\MyClass.bin的文件反序列化出来就好了,反序列化出来的对像的Nam值还是凤姐,Age值还是int.MaxValue

    现在我将介绍如何反序列化

    客户端例子

                //不用NEW了反序列化后会给出一个该对像的引用
    MyClass my;
    System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();

    //打开一个文件流
    Stream stream = new FileStream(@"c:\MyClass.bin", FileMode.Open, FileAccess.Read);

    using (stream)
    {
    //这里就是反进行序列化了
    my = (MyClass)formatter.Deserialize(stream);
    }

    现在最简单的 序列化和反序列化都介绍完了大家可以看出,我们不用去把数据库在数据库中在去数据库取数据构造对像,序列化的功能在一些特殊的场景还是比较方便的

    这里我只是介绍下变量为值类型的,下次我介绍为引用类型的序列化、和不可序列化、序列化成SOAP格式的介绍。

  • 相关阅读:
    wenbao与筛法素数及判断模板
    wenbao与dfs奇偶剪枝
    wenbao与搜索
    wenbao与反素数
    wenbao与三分
    wenbao与极角排序
    wenbao与差分约束
    wenbao与勒让德定理
    Zotero 导出参考文献列表
    为人性僻耽佳句(三)
  • 原文地址:https://www.cnblogs.com/lmm0591/p/2180836.html
Copyright © 2011-2022 走看看