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

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

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

經(jīng)過長時間學習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.NET局部靜態(tài)變量

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

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

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

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

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

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

【編輯推薦】

  1. 原理分析VB.NET開發(fā)控件
  2. 自己動手修改VB.NET支付寶接口
  3. 如何快速掌握VB.NET控件數(shù)組
  4. 描述VB.NET IDisplayer接口
  5. 事例概括VB.NET Display方法
責任編輯:佚名 來源: CSDN
相關(guān)推薦

2010-01-13 10:34:23

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

2009-10-12 14:13:00

VB.NET使用局部變

2009-11-10 15:52:20

VB.NET變量名

2009-11-03 13:48:02

VB.NET枚舉

2009-10-15 17:41:14

VB.NET Impo

2009-11-03 09:26:13

VB.NET方法

2009-10-10 15:43:51

2009-10-13 15:20:02

VB.NET使用Dra

2009-10-16 14:07:18

VB.NET使用Mon

2009-10-12 14:32:40

VB.NET實現(xiàn)定時關(guān)

2009-11-03 10:00:20

VB.NET New方

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-23 12:53:25

VB.NET語言

2009-10-16 15:06:13

VB.NET組合時間值

2009-10-16 09:21:49

VB.NET開發(fā)自動分

2009-12-24 14:30:56

VB.NET

2009-10-13 16:05:07

VB.NET字符數(shù)據(jù)類
點贊
收藏

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