vb.net中nop,vbnet c#

在VB.NET中模塊中定義的過(guò)程的默認(rèn)訪問(wèn)級(jí)別是Friend。 對(duì)不對(duì)

VB.Net中模塊定義的過(guò)程的默認(rèn)訪問(wèn)級(jí)別是Public

堅(jiān)守“ 做人真誠(chéng) · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價(jià)值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都門(mén)簾小微創(chuàng)業(yè)公司專業(yè)提供企業(yè)網(wǎng)站設(shè)計(jì)營(yíng)銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺(jué)設(shè)計(jì)、底層架構(gòu)、網(wǎng)頁(yè)布局、功能開(kāi)發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。

你可以使用ILDasm反匯編一個(gè)VB.Net程序來(lái)查看

我進(jìn)行試驗(yàn)的源代碼為(Console Application):

Module Module1

Sub Main()

k()

End Sub

Sub k()

Console.WriteLine("ABC")

Console.ReadLine()

End Sub

End Module

使用ILDasm進(jìn)行反編譯后

k()過(guò)程被解釋為:

.method public static void k() cil managed

{

// 代碼大小 20 (0x14)

.maxstack 8

IL_0000: nop

IL_0001: ldstr bytearray (C8 54 C8 54 ) // .T.T

IL_0006: call void [mscorlib]System.Console::WriteLine(string)

IL_000b: nop

IL_000c: call string [mscorlib]System.Console::ReadLine()

IL_0011: pop

IL_0012: nop

IL_0013: ret

} // end of method Module1::k

由此得知,在VB.NET的模塊中定義的過(guò)程的默認(rèn)訪問(wèn)級(jí)別是Public,而不是Friend

簡(jiǎn)單介紹一下vb.net中 IsNothing,IsDbNUll和IsNullOrEmpty 分別有什么用,和區(qū)別

isnothing : 檢測(cè)變量值是否為nothing。nothing表示任意數(shù)據(jù)類型的默認(rèn)值,如果變量是引用類型,則值 Nothing 意味著該變量不與任何對(duì)象相關(guān)聯(lián)。

isdbnull:說(shuō)明對(duì)象的數(shù)據(jù)丟失或不存在,用于指示缺少的值。它不等效于 nullNothing 或empty

null :一般用于數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)中的字段可能需要區(qū)分已賦予一個(gè)有意義的值與尚未賦值這兩種情況, 尚未賦值將用 null 值表示。

另外可以為 null 的類型的最重要成員是它有 HasValue 和 Value 屬性。 HasValue 為 FALSE時(shí)

value為 null

empty: 表示尚未實(shí)例化的變量的值,string.empty是空字符串“”,

IsNullOrEmpty:判斷是否為null或者empty.

vb.net 中 nothing和“”空的字符串 有什么區(qū)別嗎?我查了一下沒(méi)看懂他們說(shuō)的什么意思。。。

在VB.NET里,給變量賦值NoThing,其結(jié)果將對(duì)該變量賦予初始值;

而對(duì)于字符串變量初始值就是“”,數(shù)值變量初始值為0,布爾變量初始值為False。

所以對(duì)于字符串變量,賦予NoThing與賦予""是相同的。

vb.net 數(shù)組的定義方法

1、點(diǎn)擊VS工具。

2、打開(kāi)后,新建一個(gè)Windows窗體應(yīng)用程序。

3、新建完畢后,如圖所示。

4、拖動(dòng)一個(gè)按鈕。

5、定義數(shù)組最常見(jiàn)的方法,如圖示。

6、運(yùn)行后,點(diǎn)擊按鈕,彈出提示正常。

7、定義數(shù)組第二種方法,屬于動(dòng)態(tài)的方法。

8、運(yùn)行后,點(diǎn)擊按鈕,數(shù)組成功輸出。

多變量循環(huán)計(jì)算問(wèn)題

如果你在循環(huán)中定義的是值類型變量(如Integer、String等系統(tǒng)預(yù)定義的基本類型,以及用Structure定義的任何類型,如Point),那么是不會(huì)在循環(huán)的過(guò)程中不斷地進(jìn)行創(chuàng)建和銷毀,這個(gè)要在ILDASM中看才會(huì)看到。你之所以在VB.NET中看到變量在循環(huán)外面就不見(jiàn)了,那是IDE在作怪,它根據(jù)調(diào)試信息屏蔽掉了。事實(shí)上這個(gè)變量在進(jìn)入函數(shù)的時(shí)候就給你創(chuàng)建好了,并且在推出函數(shù)的時(shí)候才會(huì)被注銷掉。

當(dāng)然,以上的情況不包括用Class定義的所有類。例如Form、Control等。

建立這樣一個(gè)ConsoleApplication,在Sub Main里面添加代碼如下:

Public Sub Main()

Dim i As Integer

For i = 1 To 10

Dim s As String

s = i.ToString()

Next

End Sub

編譯成Exe,然后執(zhí)行VS.NET\Framework SDK\bin\目錄下的ILDASM.EXE,用它打開(kāi)編譯好的EXE文件,找到Module1,雙擊Main:void(),就可以看到中間代碼了——一種所謂IL的偽匯編。

再來(lái)給大家解釋一下吧:

// method表示是“方法”,實(shí)際上就是函數(shù)。

// public和VB中的沒(méi)區(qū)別,static表示是Shared的,void表示無(wú)返回值,cil表示是符合CIL的,managed 托管的。

method public static void Main() cil managed

{

.entrypoint //表示這里是整個(gè)程序的入口點(diǎn)。

//下面這個(gè)是一個(gè)標(biāo)記,用于表示這個(gè)函數(shù)是單線程的。

.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )

// Code size 23 (0x17)

.maxstack 2 //表示本地變量所需要的堆棧大小,2*4Bytes

.locals init ([0] int32 i, // init是初始化的意思,第0號(hào)整型本地變量i

[1] string s) // 第1號(hào)字符串變量s

IL_0000: nop // 空指令

IL_0001: ldc.i4.1 // 將整數(shù)(i4表示整數(shù))1裝入堆棧

IL_0002: stloc.0 // 將頂上的堆棧彈到第0號(hào)本地變量,也就是i中。

// 上面兩句的意思是 (For) i = 1

IL_0003: ldloca.s i // 將本地變量i裝到堆棧頂上。

//調(diào)用實(shí)例化(instance)的Int32.ToString()。(所有的返回值都在堆棧頂端)

IL_0005: call instance string [mscorlib]System.Int32::ToString()

IL_000a: stloc.1 // 將棧頂元素推到第1號(hào)本地變量,也就是s中。

//上面三句的意思是 s = i.ToString()

IL_000b: nop

IL_000c: ldloc.0 // 將i推到棧頂。

IL_000d: ldc.i4.1 // 將整數(shù)1推到棧頂。

IL_000e: add.ovf // 將堆棧最頂上的兩個(gè)元素相加,并進(jìn)行溢出檢查。

IL_000f: stloc.0 // 將相加的結(jié)果(在棧頂)推到i中。

//上面三句的意思是 i = i 1

IL_0010: ldloc.0 // 將i推到棧頂

IL_0011: ldc.i4.s 10 // 將整數(shù)10推到棧頂。

IL_0013: ble.s IL_0003// 如果最頂上的兩個(gè)元素中先入棧的小于等于后入棧的,

// 那就跳轉(zhuǎn)到IL_0003

// 上面三句話的意思是 For (i=1) To 10 ... Next

IL_0015: nop

IL_0016: ret // 返回

} // end of method Module1::Main

于是,在整個(gè)循環(huán)過(guò)程中,只有最開(kāi)始時(shí)有一個(gè)對(duì)s的初始化,其他地方就沒(méi)有見(jiàn)到了,甚至沒(méi)有看到顯式的“注銷”。這下子不用擔(dān)心寫(xiě)在里面會(huì)降低效率了。

名稱欄目:vb.net中nop,vbnet c#
文章地址:http://muchs.cn/article46/hcjihg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站制作企業(yè)網(wǎng)站制作、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司