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

首頁 > 學院 > 開發(fā)設計 > 正文

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

2019-11-09 17:02:25
字體:
供稿:網(wǎng)友

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

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

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

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

下面給我們將要把Player類對象序列化,然后將序列化的數(shù)據(jù)保存到名為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); } }}

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 集贤县| 淳安县| 牙克石市| 堆龙德庆县| 北京市| 阜康市| 聂拉木县| 仁寿县| 神木县| 沈丘县| 北辰区| 家居| 社会| 慈溪市| 新河县| 泸定县| 镇原县| 姚安县| 安徽省| 疏附县| 繁峙县| 嘉荫县| 栾川县| 济阳县| 乌鲁木齐市| 星座| 柞水县| 乌苏市| 林芝县| 方山县| 西城区| 雅安市| 水富县| 化州市| 曲阜市| 阿拉善右旗| 南溪县| 兰州市| 崇州市| 甘洛县| 鹤壁市|