1. 程式人生 > >C#中怎樣實現序列化和反序列化

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

image .com 合並 小白 str mat get new ons

技術分享

我們想要將數據進行持久化的操作的話,也就是將數據寫入到文件中,我們在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; } } }

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

技術分享

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