国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Unit3D -- 類的序列化(數據存儲之三)

2019-11-09 18:02:55
字體:
來源:轉載
供稿:網友

序列化是指將對象實例的狀態存儲到存儲媒體的過程。在此過程中,先將對象的公共字段,私有字段及類的名稱(包括類所在的程序集)裝換為字節流,然后再把字節流寫入數據流中。隨后對對象進行反序列化時,將創建出與元對象完全相同的副本。

我們要將玩家的數據保存到數據庫中,盡管不使用序列化也可以完成這項工作,但有時會很繁瑣而且容易出錯,并且在需要跟蹤對象的層次結構時,會變得越來越復雜。可以想象一下不得不為每一個對象編寫代碼,以便將屬性保存到磁盤,以及從磁盤還原這些屬性是那么麻煩。而序列化正好提供了輕松實現這個目標的快捷辦法。

要使一個類可序列化,最簡單的辦法是使用Serializable屬性對它進行標記,代碼如下:

using System;namespace Serializeable{ [Serializable] public class Player { public int coin = 0; public int money = 0; public String name= ""; }}

下面給我們將要把Player類對象序列化,然后將序列化的數據保存到名為Data.bin的文件中。然后對其進行反序列化。

using System;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.IO;namespace Serializeable{ public class MainClass { public static void Main(string[] args) { Serialize (); Deserialize (); } // 序列化 public static void Serialize() { Player player = new Player (); player.coin = 1; player.money = 10; player.name = "XiaoMing"; IFormatter formatter = new BinaryFormatter (); Stream stream = new FileStream ("data.bin", FileMode.Create, Fileaccess.Write, FileShare.None); formatter.Serialize (stream, player); stream.Close (); } // 反序列化 public static void Deserialize() { IFormatter formatter = new BinaryFormatter (); Stream stream = new FileStream ("data.bin", FileMode.Open, FileAccess.Read, FileShare.Read); Player player = (Player)formatter.Deserialize (stream); stream.Close (); // 輸出驗證 Console.WriteLine("coin:{0}",player.coin); Console.WriteLine("money:{0}",player.money); Console.WriteLine("name:{0}",player.name); } }}

上面代碼中先創建了Player對象,然后使用new FileStream()創建了一個名為data.bin的文件(變量stream代表了該文件)。formatter是BinaryFormatter類型實例,formatter.Serialize (stream, player)會將Player中的所有成員變量序列化成二進制數據,然后保存到stream所對應的data.bin文件中,代碼運行后,可以在程序目錄下找到data.bin文件,該文件記錄了Player的信息。 反序列化時首先創建格式化程序和流以進行讀取,然后讓格式化程序對對象進行反序列化。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿勒泰市| 凤阳县| 新昌县| 三河市| 扎囊县| 临湘市| 崇明县| 昂仁县| 开化县| 平和县| 资阳市| 祁阳县| 苏州市| 昌乐县| 宁化县| 辛集市| 江安县| 兴山县| 农安县| 中江县| 河曲县| 郁南县| 新平| 潜山县| 沾化县| 永胜县| 廊坊市| 广宁县| 神木县| 鸡西市| 如皋市| 报价| 富宁县| 福州市| 绥芬河市| 南阳市| 育儿| 崇明县| 南靖县| 齐齐哈尔市| 双辽市|