新聞中心
本篇文章為大家展示了VB.NET中怎么操作局部變量,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),武安企業(yè)網(wǎng)站建設(shè),武安品牌網(wǎng)站建設(shè),網(wǎng)站定制,武安網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,武安網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
VB.NET開發(fā)工具的出現(xiàn)對開發(fā)領(lǐng)域提供了一個全新的編寫方式。作為程序員來說,他們又多了一種編程語言的選擇,這是一件好事。我們知道,在類或者結(jié)構(gòu)初始化的時候, 成員變量***不要顯式賦以0、Nothing、False等初值,這樣不但沒有必要而且會降低性能。因為成員變量首先會被分配內(nèi)存空間,并且該內(nèi)存空間自動用“0”進(jìn)行初始化,因此顯式的賦值會增加指令操作而影響性能。
但如果是VB.NET局部變量呢?
一般情況下,如果不顯式初始化局部變量,局部變量會被自動也賦以空值、0、或者false。
'例如以下代碼
Dim b As Boolean
Console.WriteLine(b)
Dim rnd1 As Random
If rnd1 Is Nothing Then
Console.WriteLine("yes")
End If
'最終會輸出:"false yes"
不過對于引用類型的Random,編譯器會給出“ 變量“rnd1”在賦值前被使用??赡軙谶\行時導(dǎo)致 null 引用異常?!?的警告。值類型則沒有任何警告。
ok,再來看下這段VB.NET局部變量的代碼:
Module Module1Module Module1 Sub Main()Sub Main() Dim rnd As New Random(1000) For i As Integer = 0 To 4 Dim b As Boolean Console.WriteLine(b) If rnd.NextDouble > 0.5 Then b = True End If Next End Sub End Module
Module Module1
Sub Main() Dim rnd As New Random(1) For i As Integer = 0 To 9 Dim b As Boolean Console.WriteLine(b) If rnd.NextDouble < 0.5 Then b = True End If Next For i As Integer = 0 To 9 Dim rnd1 As Random If rnd1 Is Nothing Then Console.WriteLine("yes") Else Console.WriteLine("no") End If rnd1 = New Random Next End Sub End Module
照說每次循環(huán)都重新定義并初始化該VB.NET局部變量,期望的輸出值應(yīng)該一直都是false。
但猜猜實際最終輸出結(jié)果是什么,false,false,false,true,true??!
就是這個怪誕的行為讓我困擾了很久。
ok,我們看看對應(yīng)的il代碼:
.method public static void Main
() cil managed{
.custom instance void [mscorlib]
System.STAThreadAttribute::.ctor().entrypoint
.maxstack 2
.locals init (
[0] class [mscorlib]System.Random rnd,
[1] bool b,
[2] int32 i,
[3] bool VB$CG$t_bool$S0,
[4] int32 VB$CG$t_i4$S0,
[5] int32 num)
L_0000: nop
L_0001: ldc.i4 0x3e8
L_0006: newobj instance void
[mscorlib]System.Random::.ctor(int32)L_000b: stloc.0
L_000c: ldc.i4.0
L_000d: stloc.2
L_000e: ldloc.1
L_000f: call void [mscorlib]System.
Console::WriteLine(bool)L_0014: nop
L_0015: ldc.i4.1
L_0016: stloc.1
L_0017: nop
L_0018: ldloc.2
L_0019: ldc.i4.1
L_001a: add.ovf
L_001b: stloc.2
L_001c: ldloc.2
L_001d: ldc.i4.4
L_001e: stloc.s num
L_0020: ldloc.s num
L_0022: ble.s L_000e
L_0024: ldc.i4.0
L_0025: stloc.s VB$CG$t_i4$S0
L_0027: ldloc.3
L_0028: call void [mscorlib]System.
Console::WriteLine(bool)L_002d: nop
L_002e: ldc.i4.1
L_002f: stloc.3
L_0030: nop
L_0031: ldloc.s VB$CG$t_i4$S0
L_0033: ldc.i4.1
L_0034: add.ovf
L_0035: stloc.s VB$CG$t_i4$S0
L_0037: ldloc.s VB$CG$t_i4$S0
L_0039: ldc.i4.4
L_003a: stloc.s num
L_003c: ldloc.s num
L_003e: ble.s L_0027
L_0040: nop
L_0041: ret
}
上述內(nèi)容就是VB.NET中怎么操作局部變量,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享題目:VB.NET中怎么操作局部變量
網(wǎng)站網(wǎng)址:http://fisionsoft.com.cn/article/jgehjg.html