C 中的序列化和反序列化小例

2021-06-28 12:40:55 字數 1529 閱讀 6333

在很多過關的遊戲中,玩家開啟遊戲的時候還可以從上一次關閉的遊戲關卡繼續進行。上一次遊戲退出的級別資訊一般需要兩種方式進行儲存:資料庫和磁碟檔案。

如果遊戲軟體本身並不大,使用資料庫儲存資訊就顯得太繁瑣,而且成本很高,要玩乙個小遊戲,還要安裝乙個資料庫,這樣做法實在是很不值。可以採取儲存到檔案的做法:

儲存到物件狀態到檔案的**:

public class game//遊戲類

set

}private int level;

public int level

set

}}

//儲存當前玩家的遊戲名稱和級別

private void btnexit_click(object sender, eventargs e)

//從檔案讀取上次儲存的資訊

private void btnload_click(object sender, eventargs e)

但是這種方式在實際開發中很不合適,如果物件的屬性和方法很多,這樣的讀寫檔案,不僅工作量大,而且很容易處錯誤,(讀取的順序要和寫入的順序保持完全一致)

.net提供了序列化和反序列化的方法。使開發人員方便的將物件狀態永久的儲存到各種終端裝置中,並快速的讀取出來。

使用序列化和反序列化後的**:

[serializable ]//序列化和反序列化的物件,其型別必須新增[serializable ]特性

public class game//遊戲類

set

}private int level;

public int level

set

}}

//儲存當前玩家的遊戲名稱和級別

private void btnexit_click(object sender, eventargs e)

//從檔案讀取上次儲存的資訊

private void btnload_click(object sender, eventargs e)

序列化的步驟:

1.新增 using system.runtime.serialization.formatters.binary;

2.建立 檔案流filestream 物件

3.例項化 binaryformatter 物件

4.呼叫 binaryformatter 類的serialize方法實現序列化

反序列化的步驟:

1.新增 using system.runtime.serialization.formatters.binary;

2.建立 檔案流filestream 物件

3.例項化 binaryformatter 物件

4.呼叫binaryformatter類的deserialize方法實現反序列化

序列化和反序列化 C 序列化與反序列化。

序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...

C 序列化和反序列化

binaryserialize serialize new binaryserialize book book serialize.deserialize book.write 3 測試用的 binaryserialize類 using system using system.collections...

C 序列化和反序列化

對stu類進行序列化和反序列化操作序列化所用到的stu類using system using system.collections.generic using system.linq using system.text public string stuname public int stuage ...