zoukankan      html  css  js  c++  java
  • 序列化反序列化的简单例子

    基本序列化
    要使一个类可序列化,最简单的方法是使用 Serializable 属性对它进行标记,如下所示:

    [Serializable]
    public class MyObject {
       public int n1 = 0;
       public int n2 = 0;
       public String str = null;
    }
    以下代码片段说明了如何将此类的一个实例序列化为一个文件:

    MyObject obj = new MyObject();
    obj.n1 = 1;
    obj.n2 = 24;
    obj.str = "一些字符串";
    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream("MyFile.bin", FileMode.Create, 
    FileAccess.Write, FileShare.None);
    formatter.Serialize(stream, obj);
    stream.Close();
    本例使用二进制格式化程序进行序列化。您只需创建一个要使用的流和格式化程序的实例,然后调用格式化程序的 Serialize 方法。流和要序列化的对象实例作为参数提供给此调用。类中的所有成员变量(甚至标记为 private 的变量)都将被序列化,但这一点在本例中未明确体现出来。在这一点上,二进制序列化不同于只序列化公共字段的 XML 序列化程序。

    将对象还原到它以前的状态也非常容易。首先,创建格式化程序和流以进行读取,然后让格式化程序对对象进行反序列化。以下代码片段说明了如何进行此操作。

    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream("MyFile.bin", FileMode.Open, 
    FileAccess.Read, FileShare.Read);
    MyObject obj = (MyObject) formatter.Deserialize(fromStream);
    stream.Close();

    // 下面是证明
    Console.WriteLine("n1: {0}", obj.n1);
    Console.WriteLine("n2: {0}", obj.n2);
    Console.WriteLine("str: {0}", obj.str);
  • 相关阅读:
    EF
    采用什么架构,才能够承受大访问量
    13个MVC的扩展
    c#与.NET的区别
    整合Spring.net到asp.net网站开发中初探
    C#多线程编程简述
    ASP.NET页面传值的几种方式
    正则RegEXp
    C#中Cache用法
    c#程序将excel文件转换成xml文件
  • 原文地址:https://www.cnblogs.com/yongheng178/p/1970525.html
Copyright © 2011-2022 走看看