zoukankan      html  css  js  c++  java
  • 对象序列化初步

          所谓对象序列化Serialization,是指将对象保存到流Steam中(一般是磁盘文件数据流,可以使对象“永生”),需要时可以从流中重新读取数据重建对象(称为反序列化Deserialization)。

    (1)定义被序列化的类,即加上[Serializable]属性。如

        [SerializableAttribute]
        public class Student
        {
            string name;

            public string Name
            {
                get { return name; }
                set { name = value; }
            }
            public void SayHi()
            {
                Console.WriteLine("Hi,My name is {0}.",Name);
            }
        }

    (2)调用BinaryFormatter类的Serialize方法进行序列化。如

            public static void Save(Student s)
            {
                using (FileStream fileStream = new FileStream("profile.bin", FileMode.Create))
                {
                    BinaryFormatter bf = new BinaryFormatter();
                    bf.Serialize(fileStream, s);
                    fileStream.Close();
                }
            }

    (3)调用BinaryFormatter类的Deserialize方法进行反序列化。如

            public static Student Load()
            {
                Student s = new Student();
                using (FileStream fileStream = new FileStream("profile.bin", FileMode.Open))
                {         
                    BinaryFormatter bf = new BinaryFormatter();
                    s= (Student)bf.Deserialize(fileStream);
                    fileStream.Close();
                }
                return s;
            }

    (4)需要时可以调用上面的方法,进行序列化和反序列化:

            static void Main(string[] args)
            {
                Student s = new Student();
                s.Name = "aa";
                Save(s);
                Student otherStudent = Load();
                otherStudent.SayHi();
                Console.ReadKey();

            }

         在这过程中需要引用命名空间:

          using System.Runtime.Serialization.Formatters.Binary;
          using System.IO;

  • 相关阅读:
    CodeForces 52B Right Triangles 矩阵上的计数
    电影节
    怎样高速生成随机数
    VS2010版快捷键
    两个下拉框选择后取出这两个框的区间值
    vs操作快捷键
    输入框限制,条件是左边输入框输入的数字要小于右边输入框的值,两边输入框要为整型数字。
    DateTime.Parse
    清空文本输入框的值
    sql 随机函数newid()
  • 原文地址:https://www.cnblogs.com/zhouhb/p/2034043.html
Copyright © 2011-2022 走看看