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

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 序列化反序列化
    {
        class Program
        {
            static void Main(string[] args)
            {
                //需要将对象的状态保存起来 持久化
                //序列化:将对象的状态持久化到某种设备上(磁盘)
                //要将类标记为Serializable 这个类的对象才能被序列化
                //以二进制的方式进行序列化,而不是文本文档
    
                //反序列化:将之前序列化的文件还原为对象
                #region[序列化]
                Person p1 = new Person() { Age = 19, Name = "Rose" };
                System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                using (FileStream fs = new FileStream("se.bin", FileMode.Create))
                {
                    bf.Serialize(fs, p1);
                }
                #endregion
    
                #region【反序列化】
                System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf2 = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                using (FileStream fs = new FileStream("se.bin", FileMode.Open))
                {
                    object obj = bf2.Deserialize(fs);
                    Person p3 = obj as Person;
                    Console.WriteLine("Age:" + p3.Age.ToString() + "Name:" + p3.Name);
                }
                #endregion
    
    
    
    
                #region [将一个对象保存到文件文本中,用文件的方式让对象持久化,但是麻烦]
                Person p = new Person();
                if (File.Exists(@"1.txt"))
                {
                    string[] strlines = File.ReadAllLines(@"1.txt");
                    p.Age = int.Parse(strlines[0]);
                    p.Name = strlines[1];
                }
                else
                {
                    p.Age = 19;
                    p.Name = "Jack";
                    File.WriteAllLines(@"1.txt", new string[] { p.Age.ToString(), p.Name });
                }
                #endregion
                Console.Read();
            }
    
        }
        [Serializable]//表示这个对象可以被序列化,里面的成员如果有其它类,那么这个类也应该需要标记Serializable
        public class Person
        {
            public int Age { get; set; }
            public string Name { get; set; }
        }
    }
  • 相关阅读:
    Cocos2d-x 3.0 屏幕触摸及消息分发机制
    stretchableImageWithLeftCapWidth气泡拉伸
    海量数据插入数据库效率对照測试 ---ADO.NET下SqlBulkCopy()对照LINQ 下InsertAllOnSubmit()
    银联+移动+三星PK微信、余额宝
    热力学三大定律与熵
    热力学三大定律与熵
    OpenGL(六) gluLookAt和gluPerspective函数解析
    特殊字符
    特殊字符
    函数的功能
  • 原文地址:https://www.cnblogs.com/sumg/p/3801010.html
Copyright © 2011-2022 走看看