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

首頁(yè) > 編程 > .NET > 正文

VB.net進(jìn)階:如何實(shí)現(xiàn)序列化

2024-07-10 13:01:15
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友


本文盡量用最簡(jiǎn)單的例子來(lái)介紹如何做序列化。

序列化的基本方式如下圖:將對(duì)象送給formatter,formatter將其序列化之后會(huì)形成一個(gè)流。這個(gè)流可以是文件流,或者其他的。

+-------------+
+------+ | | serialize +----------+
|object|===>| formatter |------------------>| stream |
+------+ | | +----------+
+-------------+

在這里,我們將一個(gè)隨機(jī)生成的數(shù)組進(jìn)行二進(jìn)制序列化,并保存到文件;然后把它從文件當(dāng)中取出,進(jìn)行反序列化重新得到這個(gè)數(shù)組。

首先是定義數(shù)組:
dim nums(10) as integer

然后是生成數(shù)組內(nèi)容:
dim i as integer
for i = 0 to 10
nums(i) = int(rnd() * 500) + 100
next

序列化是通過(guò)formatter對(duì)象來(lái)實(shí)現(xiàn)的。我們要新建一個(gè)formatter對(duì)象:
dim sfformatter as new system.runtime.serialization.formatters.binary.binaryformatter
binaryformatter是進(jìn)行二進(jìn)制序列化的。其它的序列化方式你可以在runtime.serialization.formatters中找到。

我們還要有一個(gè)流來(lái)作為序列化的輸出:
dim fstream as new filestream(“1.dat”, filemode.create)

準(zhǔn)備工作完了,現(xiàn)在可以調(diào)用formatter的serialize方法來(lái)進(jìn)行序列化了:
sfformatter.serialize(fstream, nums)

最后不要忘了關(guān)閉流:
fstream.close()

反序列化的方式大同小異,只不過(guò)調(diào)用的是formatter的deserialize方法。代碼是這樣的:
private sub deserialize()
dim fstream as new filestream(“1.dat”, filemode.open)
dim sfformatter as new system.runtime.serialization.formatters.binary.binaryformatter
nums = sfformatter.deserialize(fstream)
fstream.close()
end sub

序列化就這么簡(jiǎn)單。這里只是序列化整數(shù)數(shù)組。如果你要對(duì)自定義類的對(duì)象進(jìn)行序列化,你需要在類的定義前面加上:
<serializable()>

對(duì)于序列化還有更高級(jí)的應(yīng)用,比方你可以指定類中的哪些成員不能被序列化,以及定義自己的序列化接口。本文到此為止。想了解更多的話,去找 msdn 吧!


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 徐汇区| 普定县| 郸城县| 美姑县| 霞浦县| 邓州市| 沙洋县| 长子县| 南昌市| 玛曲县| 灵丘县| 绥滨县| 兰考县| 永仁县| 崇明县| 景德镇市| 和林格尔县| 凌海市| 大埔区| 华蓥市| 绵竹市| 朝阳市| 永川市| 沽源县| 夹江县| 竹溪县| 连山| 宁远县| 丹凤县| 体育| 明水县| 宣城市| 常熟市| 巢湖市| 苍山县| 射阳县| 株洲市| 施甸县| 武汉市| 乐亭县| 利辛县|