.net實現(xiàn)序列化與反序列化實例解析
序列化與反序列化是.net程序設(shè)計中常見的應(yīng)用,本文即以實例展示了.net實現(xiàn)序列化與反序列化的方法。具體如下:
一般來說,.net中的序列化其實就是將一個對象的所有相關(guān)的數(shù)據(jù)保存為一個二進制文件(注意:是一個對象)
而且與這個對象相關(guān)的所有類型都必須是可序列化的所以要在相關(guān)類中加上 [Serializable]特性
對象類型包括:對象本身包含的類型,父類
擁有需要的對象之后:
1.將對象轉(zhuǎn)換為二進制數(shù)據(jù) 使用專門的對像進行轉(zhuǎn)換 BinaryFormatter
2.將二進制數(shù)據(jù)寫入到文件 FileSteam
反序列化則是把二進制文件轉(zhuǎn)換為一個對象
示例代碼如下所示:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Person per;//將要被序列化的對象 Console.WriteLine("------序列化與反序列化------"); Console.WriteLine("是否讀取已經(jīng)序列化的對象per"); string str = Console.ReadLine(); if (str == "yes") { if (!File.Exists("save.bin")) { Console.WriteLine("你還沒有將per序列化"); return; } using (FileStream fs = new FileStream("save.bin", FileMode.Open)) { BinaryFormatter bf = new BinaryFormatter(); per = bf.Deserialize(fs) as Person;//將二進制數(shù)據(jù)轉(zhuǎn)換為per對象 per.SayHi(); Console.ReadLine(); } } else { per = new Person(); per.Name = "小李"; using(FileStream fs=new FileStream("save.bin",FileMode.Create)) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fs,per);//將per對象轉(zhuǎn)換成二進制數(shù)據(jù),并保存。 Console.WriteLine("序列化成功"); Console.ReadLine(); } } } } [Serializable] class Person { public string Name; public void SayHi() { Console.WriteLine("hello {0}",Name); } } }
相信本文實例對于大家進一步理解.net的序列化與反序列化有一定的借鑒幫助作用。
相關(guān)文章
C#從文件或標(biāo)準(zhǔn)輸入設(shè)備讀取指定行的方法
這篇文章主要介紹了C#從文件或標(biāo)準(zhǔn)輸入設(shè)備讀取指定行的方法,涉及C#文件及IO操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04C# Winform中DataGridView導(dǎo)出為Excel的實現(xiàn)示例
本文主要介紹了C# Winform中DataGridView導(dǎo)出為Excel的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05Unity 從Resources中動態(tài)加載Sprite圖片的操作
這篇文章主要介紹了Unity 從Resources中動態(tài)加載Sprite圖片的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04C# ThreadPool之QueueUserWorkItem使用案例詳解
這篇文章主要介紹了C# ThreadPool之QueueUserWorkItem使用案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08WinForm實現(xiàn)程序一段時間不運行自動關(guān)閉的方法
這篇文章主要介紹了WinForm實現(xiàn)程序一段時間不運行自動關(guān)閉的方法,涉及WinForm計時器及進程操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09