C#中怎樣實現序列化和反序列化


我們想要將數據進行持久化的操作的話,也就是將數據寫入到文件中,我們在C#中可以通過IO流來操作,同時也可以通過序列化來操作,本人是比較推薦使用序列化操作的

因為我們如果想要將一個對象持久化到文件中 如果我們使用IO流文件流操作的話可能就沒辦法實現了,但是我們用序列化的話就可以輕而易舉的實現,並且當我們回拿到數據的

時候,我們拿到的也是一個對象,但是它保存到文件中是二進制文件

具體實現步驟如下

首先我們有一個實體對象  並且這個類是可支持序列化操作的  也就是掛載有[Serializable]標記

 //說明該類可以被序列化
    [Serializable]
   public class Peoson
    {
        private int age;
        private string name;
        public int Age
        {
            get { return age; }
            set { age = value; }
        }
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public Peoson() { }
        public Peoson(string name,int age) {
            this.age = age;
            this.name = name;
        }
        public void say() {
            Console.WriteLine("名字:{0},年齡{1}",name,age);
        }

    }

然后我們在Main函數中准備一個集合,並將上面創建的類作為集合的屬性,為其添加數據,直接對該集合進行序列化操作和反序列化操作

 static void Main(string[] args)
        {
            //准備集合並為其添加數據
            List<Peoson> list = new List<Peoson>();
            Peoson p1 = new Peoson("小黃", 18);
            Peoson p2 = new Peoson("小白", 28);
            Peoson p3 = new Peoson("小青", 15);
           
            list.Add(p1);
            list.Add(p2);
            list.Add(p3);

            //序列化
            SerializeMethod(list);

            //反序列化
          List<Peoson> list2=  ReserializeMethod();//調用反序列化的方法  其方法返回值是一個List集合
          foreach (Peoson item in list2)//遍歷集合中的元素
          {
              item.say();
          }

          Console.ReadKey();

        }

        //序列化操作
        public static void SerializeMethod(List<Peoson> list) {
            using (FileStream fs=new FileStream("序列化.btn",FileMode.Create))
            {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(fs,list);
                Console.WriteLine("序列化成功!");
           }
        }

        //反序列化操作
        public static List<Peoson> ReserializeMethod()
        { 
            using(FileStream fs=new FileStream("序列化.btn",FileMode.Open)){

                BinaryFormatter bf = new BinaryFormatter();
                List<Peoson> list = (List<Peoson>)bf.Deserialize(fs);
                return list;
            }
        }
    }

 

 以上我們就對集合數據完成了序列化和反序列化的操作了

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM