VB.Net學(xué)習(xí)筆記(變量生存期與賦值)
發(fā)表時(shí)間:2023-08-11 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]變量有生存周期這一點(diǎn)程序員們都了解,在VB.Net中增加了一個(gè)修飾Shared。Shared 關(guān)鍵字指示一個(gè)或多個(gè)被聲明的編程元素將被共享。要點(diǎn)是:共享元素不關(guān)聯(lián)于某類或結(jié)構(gòu)的特定實(shí)例。需要通過(guò)使用...
變量有生存周期
這一點(diǎn)程序員們都了解,在VB.Net中增加了一個(gè)修飾Shared。Shared 關(guān)鍵字指示一個(gè)或多個(gè)被聲明的編程元素將被共享。要點(diǎn)是:共享元素不關(guān)聯(lián)于某類或結(jié)構(gòu)的特定實(shí)例。需要通過(guò)使用類名或結(jié)構(gòu)名稱或者類或結(jié)構(gòu)的特定實(shí)例的變量名稱限定共享元素來(lái)訪問(wèn)它們。簡(jiǎn)單的描述就是Shared變量是為類型本身服務(wù)而不是為特定對(duì)象服務(wù)的。
Shared舉例
Public Class TestA
Public Shared i As Int32 = 10
End Class
Public Class TestB
Inherits TestA '繼承TestA
Public Sub New()
TestA.i = 100 '使用類型的名字進(jìn)行訪問(wèn)Shared變量
End Sub
End Class
要注意的是,在VB.Net中Shared變量與類型和實(shí)例的關(guān)系在語(yǔ)法上要求似乎并不特別嚴(yán)格,程序員可以使用類型的實(shí)例來(lái)訪問(wèn)并修改Shared變量,但在C#中要求就很?chē)?yán)謹(jǐn)了。
賦值語(yǔ)句
在VB.Net中賦值語(yǔ)句分為:簡(jiǎn)單賦值語(yǔ)句、復(fù)合賦值語(yǔ)句、委托賦值語(yǔ)句、Mid賦值語(yǔ)句。
簡(jiǎn)單賦值語(yǔ)句
簡(jiǎn)單賦值語(yǔ)句和以前的VB賦值語(yǔ)句基本上沒(méi)有太大的區(qū)別,只是現(xiàn)在VB.Net允許對(duì)變量聲明后就立即賦值了(在前面可訪問(wèn)性舉例可以看到示例)。我們需要關(guān)注的是數(shù)組的聲明和賦值方法。
在VB.Net中你可以在聲明數(shù)組時(shí)同時(shí)描述數(shù)組的緯度和上限,且每一個(gè)數(shù)組的緯度的下限都是0,不可以改變。但可以通過(guò)將數(shù)組的上限指定為 -1 來(lái)指定“零長(zhǎng)度數(shù)組”。這種數(shù)組不包含任何元素。
如果不顯示的描述數(shù)組的長(zhǎng)度,你可以在聲明數(shù)組的同時(shí)立即賦值。
數(shù)組的聲明和賦值舉例
Public Class TestA
Dim iArr() As Int32
Dim bArr(5) As Boolean '5是指bArr下標(biāo)的上限,即可以有6個(gè)元素
Dim lArr() As Long = New Long(3) {100, 200, 300, 400}
Dim cArr() As String = New String() {"A", "B", "C"}
Dim dArr(-1) As Double
End Class
關(guān)于數(shù)組的更多特性,在后期關(guān)于數(shù)組的介紹中將詳細(xì)闡述。
復(fù)合賦值
現(xiàn)在VB.Net開(kāi)始支持復(fù)合賦值語(yǔ)句。與完全展開(kāi)的表達(dá)式不同,復(fù)合賦值語(yǔ)句左側(cè)的變量?jī)H計(jì)算一次。這意味著在運(yùn)行時(shí),變量表達(dá)式先于賦值語(yǔ)句右側(cè)的表達(dá)式計(jì)算。
復(fù)合賦值舉例
Public Class TestA
Public Sub New()
Dim i As Int32
i += 10
End Sub
End Class
Mid賦值
Mid賦值實(shí)際上是字符串的處理賦值過(guò)程。通過(guò)以下的舉例可以了解Mid的賦值方式。
Mid舉例
Public Class TestA
Public Sub New()
Dim TmpStr As String
TmpStr = "Hello VB.Net" ' Hello VB.Net
Mid(TmpStr, 7, 2) = "c#" ' Hello c#.Net
Mid(TmpStr, 7) = "VB6" ' Hello VB6Net
Mid(TmpStr, 7) = "VB6 to VB.Net" ' Hello VB6 to
Mid(TmpStr, 7, 3) = "VB6 to VB.Net" 'Hello VB6 to
End Sub
End Class
關(guān)于委托語(yǔ)句的關(guān)鍵字AddressOf在后期委托和