在很多過關的遊戲中,玩家開啟遊戲的時候還可以從上一次關閉的遊戲關卡繼續進行。上一次遊戲退出的級別資訊一般需要兩種方式進行儲存:資料庫和磁碟檔案。
如果遊戲軟體本身並不大,使用資料庫儲存資訊就顯得太繁瑣,而且成本很高,要玩乙個小遊戲,還要安裝乙個資料庫,這樣做法實在是很不值。可以採取儲存到檔案的做法:
儲存到物件狀態到檔案的**:
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 ...