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

     

        序列化,就是格式化,是把一个对象以某种格式进行呈现。主要有三种,1、二进制序列化,2、XML序列化,3、JavaScript序列化。

         下面讲一下二进制序列化的过程

         1、在需要序列化的类的前面,标记为Serializable

         2、创建序列化的对象,就是用BinaryFormatter把我们的数据转换为二进制

         3、创建流,我们序列化的数据就是用流来进行存放的。如果是内存流,就存在内存中,如果是网络流就存在网络中。

          4、调用序列化方法

          下面是具体代码

        

    /// <summary>
        /// 序列化
        /// </summary>
        class Program {
            static void Main(string[] args) {
                BinaryFormatter bf = new BinaryFormatter();
                using (FileStream f = new FileStream("data", FileMode.Create, FileAccess.Write)) {
                    bf.Serialize(f, new Address() { Name = "test", Id = 11 });
                }
                Console.ReadKey();
                //上面是序列化,下面是反序列化
                BinaryFormatter bf = new BinaryFormatter();
                using (FileStream f = new FileStream("data",FileMode.Open,FileAccess.Read)) {
                    Console.WriteLine(bf.Deserialize(f));
                }
                //整体的全局的,游戏离开,是否保存。
                //场景,状态1,状态2, 把场景保存为二进制数据。
            }
        }
    
        /// <summary>
        ///  
        /// </summary>
        [Serializable]
        class Address {
            public int Id { get; set; }
            public string Name { get; set; }
        }

        其实序列化还有一个作用就是方便程序的扩展。很多对一个集合进行解析的方式都是用序列化进行的。看如下例子

      

     这个是方式一 ,下面是序列化的方式

    好像很多C#源码来对集合解析的,欢迎大家讨论。

  • 相关阅读:
    AC自动机 [模板]
    ChonSu [ZOJ 2684]
    Quad Tiling [POJ 3420]
    LCA 最近公共祖先 [POJ 1330]
    强连通分量[trajan]
    高斯消元 [模板]
    01K Code [HDU 1545]
    Cycle Game [ZOJ 2686]
    清除Eclipse中的内置浏览器中的历史记录(REF)
    第三方的 NET 数据库连接提供者,Lightswitch
  • 原文地址:https://www.cnblogs.com/gdouzz/p/6086993.html
Copyright © 2011-2022 走看看