国产探花免费观看_亚洲丰满少妇自慰呻吟_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的信息。 反序列化時首先創建格式化程序和流以進行讀取,然后讓格式化程序對對象進行反序列化。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海南省| 高碑店市| 巴林左旗| 南昌县| 喜德县| 本溪市| 拉萨市| 青岛市| 镇巴县| 辽宁省| 临桂县| 临澧县| 新安县| 任丘市| 太白县| 临夏县| 宁乡县| 奉新县| 和顺县| 隆尧县| 丹棱县| 烟台市| 克拉玛依市| 新民市| 惠东县| 高雄市| 茌平县| 屏南县| 麻阳| 长乐市| 昂仁县| 铜梁县| 乌拉特中旗| 栾川县| 茌平县| 南平市| 大宁县| 台北市| 渑池县| 克拉玛依市| 洪江市|