自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

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

 

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

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

 

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

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

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

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

2009-10-28 09:47:01

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

2009-07-21 13:01:07

ASP.NET上傳文件

2013-03-25 13:52:39

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

2020-04-08 09:57:53

漏洞安全漏洞漏洞管理

2009-10-12 14:13:00

VB.NET使用局部變

2019-09-11 17:16:34

DockerGitHubWindows

2009-12-30 15:10:44

摩卡

2009-02-16 09:47:00

IPTV技術(shù)多媒體運營

2023-03-24 07:31:58

Oracle兼容性產(chǎn)品

2011-05-30 17:31:26

自動化測試

2013-07-22 17:49:52

Ubuntu虛擬機

2010-09-01 17:13:56

無線局域網(wǎng)WLAN

2010-01-08 15:22:22

VB.NET局部變量

2010-01-21 10:57:12

VB.NET局部變量類

2010-01-20 10:27:07

VB.NET隱式類型局

2009-10-13 14:42:30

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

2009-10-28 11:35:25

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

2009-07-14 10:56:21

MyEclipse快捷插件

2010-07-08 10:03:39

動態(tài)語言PythonRuby

2015-07-22 09:54:48

互聯(lián)網(wǎng)+發(fā)達國家
點贊
收藏

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