C#中的序列化和反序列化案例
生活随笔
收集整理的這篇文章主要介紹了
C#中的序列化和反序列化案例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
序列化:是將對象的狀態(tài)存儲到特定存儲介質(zhì)的過程,也可以說是將對象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程。
上面的解釋是官方定義,大白話解釋就是,將對象以二進制的方式存儲在文件中,如果簡簡單單的將一些數(shù)據(jù)或者內(nèi)容存儲到文件中的話,很好實現(xiàn),直接使用IO就可以,但是對象可就不一樣了,我們可以通過序列化來實現(xiàn),下面就展示一個序列化的案例:
首先新建一個Student類,需要注意的是,在類的上方要標(biāo)識[Serializable],以表示該類可支持序列化操作。
[Serializable] public?class?Student {public?int?Id?{?get;?set;?}public?string?Name?{?get;?set;?}public?string?Sex?{?get;?set;?}public?int?Age?{?get;?set;?}public?Student()?{?}public?Student(string?name,int?age,string?sex)?{this.Name?=?name;this.Age?=?age;this.Sex?=?sex;}public?void?Say()?{Console.WriteLine("姓名是:{0},年齡是:{1},性別是{2}",Name,Age,Sex);}}接下來寫一個測試類實現(xiàn)一下序列化:
????????//序列化操作????????static void TestXu(){????? ???List<Student>?slist?=?new?List<Student>();Student?stu1?=?new?Student("劉世豪",12,"男");Student?stu2?=?new?Student("李宏洋",?18,?"男");Student?stu3?=?new?Student("鐘立琦",19,"男");slist.Add(stu1);slist.Add(stu2);slist.Add(stu3); using(FileStream?fs?=?new?FileStream(@"d:/test/test.btn",FileMode.Create)){????????????BinaryFormatter?bf?=?new?BinaryFormatter();bf.Serialize(fs,slist);Console.WriteLine("序列化成功");}}執(zhí)行一下,運行結(jié)果不出意外的話是:序列化成功,但是提醒你不要去看生成的那個文件,不信的話你就去看看。
反序列化:顧名思義就是與序列化相反,也就是從文件中將對象在還原回來。下面是代碼案例:
//反序列化操作static void TestFanXu(){????????????using(FileStream?fs?=?new?FileStream(@"d:/test/test.txt",FileMode.Open)){BinaryFormatter?bf?=?new?BinaryFormatter();List<Student>?slist?=?(List<Student>)bf.Deserialize(fs);foreach?(Student?stu?in?slist)?{Console.WriteLine(stu.Name);}}}輸出的運行結(jié)果:
劉世豪
李宏洋
鐘立琦
這就是序列化和反序列化操作的案例。
溫馨提示
如果你喜歡本文,請分享到朋友圈,想要獲得更多信息,請關(guān)注我。
往期內(nèi)容更精彩哦~
總結(jié)
以上是生活随笔為你收集整理的C#中的序列化和反序列化案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京青年任知了身世 北京青年任知了简单介
- 下一篇: 开户行支行是什么 开户行支行是啥意思