偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

VB.NET局部靜態(tài)變量面面觀

開(kāi)發(fā) 后端
VB.NET局部靜態(tài)變量的實(shí)質(zhì)內(nèi)容就是相當(dāng)于一個(gè)類的字段,我們可以在這篇文章中為大家詳細(xì)介紹這一方面的基礎(chǔ)知識(shí)。

大家可能對(duì)VB.NET這樣一款功能強(qiáng)大的編程語(yǔ)言有所了解,因?yàn)槠湓陂_(kāi)發(fā)領(lǐng)域中的應(yīng)用范圍還是比較廣泛的。首先我們可以從VB.NET局部靜態(tài)變量的相關(guān)介紹來(lái)詳細(xì)解讀這款語(yǔ)言給我們帶來(lái)的好處,并從中了解它的基本概念。#t#

經(jīng)過(guò)長(zhǎng)時(shí)間學(xué)習(xí)VB.NET局部靜態(tài)變量,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。VB.NET能夠?qū)崿F(xiàn)很多C#不能做到的功能,如When語(yǔ)句、Optional參數(shù)、局部Static變量、對(duì)象實(shí)例訪問(wèn)靜態(tài)方法、Handles綁定事件、On Error處理異常、Object直接后期綁定等等。VB和C#同屬.NET的語(yǔ)言,編譯出來(lái)的是同樣的CIL,但為什么VB支持很多有趣的特性呢。我們一起來(lái)探究一下VB.NET局部靜態(tài)變量。

VB支持用Static關(guān)鍵字聲明局部變量,這樣在過(guò)程結(jié)束的時(shí)候可以保持變量的數(shù)值:

 

  1. Public Sub Test1() Static i
     As Integer i += 1 
  2. '實(shí)現(xiàn)一個(gè)過(guò)程調(diào)用計(jì)數(shù)器 End Sub 

我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的過(guò)程計(jì)數(shù)器。每調(diào)用一次Test,計(jì)數(shù)器的數(shù)值就增加1。其實(shí)還有很多情況我們希望保持變量的數(shù)值。而C#的static是不能用在過(guò)程內(nèi)部的。因此要實(shí)現(xiàn)過(guò)程計(jì)數(shù)器,我們必須聲明一個(gè)類級(jí)別的變量。這樣做明顯不如VB好。因?yàn)闊o(wú)法防止其他過(guò)程修改計(jì)數(shù)器變量。這就和對(duì)象封裝一個(gè)道理,本來(lái)應(yīng)該是一個(gè)方法的局部變量,現(xiàn)在我要被迫把它獨(dú)立出來(lái),顯然是不好的設(shè)計(jì)。那么VB是怎么生成局部靜態(tài)變量的呢?將上述代碼返匯編,我們可以清楚地看到在VB生成的CIL中,i不是作為局部變量,而是作為類的Field出現(xiàn)的:

 

  1. .field private specialname 
    int32 $STATIC$Test1$2001$i 

也就是說(shuō),i被改名作為一個(gè)類的字段,但被冠以specialname。在代碼中試圖訪問(wèn)$STATIC$Test1$2001$i是不可能的,因?yàn)樗皇且粋€(gè)有效的標(biāo)識(shí)符。但是在IL中,將這個(gè)變量加一的代碼卻與一般的類字段完全一樣,是通過(guò)ldfld加載的。我覺(jué)得這個(gè)方法十分聰明,把靜態(tài)變量變成生命周期一樣的類字段,但是又由編譯器來(lái)控制訪問(wèn)的權(quán)限,讓它成為一個(gè)局部變量。同時(shí)也解釋了VB為什么要用兩個(gè)不同的關(guān)鍵字來(lái)聲明靜態(tài)變量—— Static和Shared。

由于VB.NET局部靜態(tài)變量的實(shí)質(zhì)是類的字段,所以它和真正的局部變量還是有所不同的。比如在多線程條件下,對(duì)VB.NET局部靜態(tài)變量的訪問(wèn)就和訪問(wèn)字段相同。

責(zé)任編輯:曹凱 來(lái)源: IT168
相關(guān)推薦

2009-10-28 09:47:01

VB.NET局部靜態(tài)變

2009-07-21 13:01:07

ASP.NET上傳文件

2020-04-08 09:57:53

漏洞安全漏洞漏洞管理

2013-03-25 13:52:39

SDN軟件定義網(wǎng)絡(luò)Hybird

2009-10-12 14:13:00

VB.NET使用局部變

2019-09-11 17:16:34

DockerGitHubWindows

2009-12-30 15:10:44

摩卡

2023-03-24 07:31:58

Oracle兼容性產(chǎn)品

2009-02-16 09:47:00

IPTV技術(shù)多媒體運(yùn)營(yíng)

2011-05-30 17:31:26

自動(dòng)化測(cè)試

2013-07-22 17:49:52

Ubuntu虛擬機(jī)

2010-09-01 17:13:56

無(wú)線局域網(wǎng)WLAN

2009-10-13 14:42:30

VB.NET靜態(tài)成員

2010-01-08 15:22:22

VB.NET局部變量

2010-01-20 10:27:07

VB.NET隱式類型局

2010-01-21 10:57:12

VB.NET局部變量類

2009-10-28 11:35:25

Linux服務(wù)器優(yōu)化

2010-07-08 10:03:39

動(dòng)態(tài)語(yǔ)言PythonRuby

2022-02-22 06:11:46

數(shù)字化轉(zhuǎn)型企業(yè)云數(shù)據(jù)庫(kù)

2009-07-14 10:56:21

MyEclipse快捷插件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)