VB.NET可選參數(shù)的默認(rèn)值必須是一個(gè)常數(shù)表達(dá)式。
創(chuàng)新互聯(lián)專注于西安企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城系統(tǒng)網(wǎng)站開(kāi)發(fā)。西安網(wǎng)站建設(shè)公司,為西安等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
過(guò)程定義中跟在可選參數(shù)后的每個(gè)參數(shù)也都必須是可選的。
下面的語(yǔ)法顯示帶VB.NET可選參數(shù)的過(guò)程聲明:
Sub sub name(ByVal parameter 1 As data type 1,
Optional ByVal parameter 2 As data type 2 = default value)
調(diào)用帶VB.NET可選參數(shù)的過(guò)程
過(guò)程在運(yùn)行時(shí)無(wú)法檢測(cè)到給定的參數(shù)是否已被省略,或者調(diào)用代碼是否已顯式提供默認(rèn)值。如果需要弄清楚這一點(diǎn),可以設(shè)置一個(gè)不可能的值作為默認(rèn)值。下面的過(guò)程定義了可選參數(shù) office,并測(cè)試其默認(rèn)值 QJZ 以查看它在調(diào)用中是否已被省略:
Visual Basic
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters" End If
' Insert code to notify headquarters or specified office.
End Sub
如果可選參數(shù)是像 String 這樣的引用類型,只要它不是該變量所預(yù)期的值,就可以使用 Nothing 作為默認(rèn)值。
VB.NET可選參數(shù)和重載
定義帶可選參數(shù)的過(guò)程的另一種方法是使用重載。如果有一個(gè)可選參數(shù),可以定義過(guò)程的兩個(gè)重載版本,一個(gè)接受此參數(shù),另一個(gè)則不帶參數(shù)。此方法隨可選參數(shù)數(shù)目的增加而變得更復(fù)雜。然而,這樣做的優(yōu)點(diǎn)是可以完全確定調(diào)用程序是否提供了每個(gè)VB.NET可選參數(shù)。
第一步,新建項(xiàng)目。
1
打開(kāi)vb.net,也就是打開(kāi)Microsoft visual studio 2010,第一次使用的時(shí)候設(shè)置為basic語(yǔ)言就行。新建項(xiàng)目--打開(kāi)excel。
2
新建成功。
END
第二步,添加引用。
1
“項(xiàng)目”--“添加引用”。
2
添加Microsoft Excel 14.0 Object Library。
END
第三步,添加打開(kāi)文件對(duì)話框工具。
1
工具箱--對(duì)話框--openfiledialog。
2
添加成功。
END
第四步,添加命令按鈕控件。
1
工具箱--公共控件--button。
在控件上右擊鼠標(biāo),進(jìn)入屬性設(shè)置。
2
text屬性設(shè)置為“打開(kāi)excel”。
3
name屬性也設(shè)置為“打開(kāi)excel”。
END
第五步,編寫程序。
1
鼠標(biāo)雙擊命令按鈕,進(jìn)入編程界面,編寫程序。
END
第六步,運(yùn)行程序。
1
鼠標(biāo)單擊啟動(dòng)調(diào)式圖標(biāo),程序開(kāi)始運(yùn)行。
2
單擊打開(kāi)excel命令按鈕,調(diào)用打開(kāi)文件對(duì)話框,選擇自己要打開(kāi)的excel文件。
END
第七步,保存程序。
第一次程序運(yùn)行完,關(guān)閉程序,出現(xiàn)關(guān)閉項(xiàng)目提示,選擇保存。
2
選好自己要保存的位置。
1. Shared Function System.Runtime.
InteropServices.DLLimport("user32.dll")
2. MessageBoxA(ByVal hwnd As Integer,
ByVal text As String, ByVal
lpcaption As String, ByVal
wtype As Integer) As Integer
3. End Function
首先integer被作為32位數(shù)據(jù)替代了long(long是64位)
System是Net語(yǔ)言中的一個(gè)族,System.Runtime.InteropServices是system中的一個(gè)類。System.Runtime.InteropServices.DLLimpor是其中的一個(gè)方法。調(diào)用DLL的API
接口,這個(gè)的意思就是vb6的lib"user32", share是共享的意思,例如:
1. Public Class classA
2. Shared Function System.Runtime.
InteropServices.DLLimport("user32.dll")
MessageBoxA(ByVal h As Integer,
ByVal m As String, ByVal c As
String, ByVal type As Integer) As Integer
3. End Function
4. End Class
你可以這樣調(diào)用 classA.MessageboxA 但是如果沒(méi)有這個(gè)share 在class后打點(diǎn)就沒(méi)有MessageboxA的成員出現(xiàn)了 ,現(xiàn)在你就象以前一樣的使用他吧。
其實(shí)上面這個(gè)VB.NET函數(shù)調(diào)用方法并不正確,我們?nèi)耘f要使用API聲明,只是換了一各形式
如果你認(rèn)為這就是VB.NET就錯(cuò)了,看看這個(gè):
system.WinForms.MessageBox.Show("對(duì)話內(nèi)容寫在這里", "標(biāo)題寫在這里", messagebox.OK BitOr messagebox.IconAsterisk)
這就是面向?qū)ο?,你已?jīng)完成了所有的任務(wù)。不需要任何的API聲明。不需要寫多余的代碼。
1. messagebox.IconAsterisk=驚嘆號(hào)圖標(biāo)
2. messagebox.IconError=錯(cuò)誤圖標(biāo)
3. messagebox.IconExclamation=警告圖標(biāo)
4. messagebox.IconHand=錯(cuò)誤圖標(biāo)
5. messagebox.IconInformation=提示圖標(biāo)
所經(jīng)點(diǎn)NET就是打點(diǎn)到達(dá),在族后面打點(diǎn),在類后面打點(diǎn),在對(duì)象后面打點(diǎn)。第二個(gè)問(wèn)題就是類與類之間相互的關(guān)系,Net在網(wǎng)上處理人與人的關(guān)系,在程序語(yǔ)言中處理類與類的關(guān)系。倒底是加不加share,倒底是類后面打點(diǎn),還是Dim成一個(gè)對(duì)象(把他當(dāng)一個(gè)變量吧)再說(shuō),是等于class,還是New class.是dim xxx as class=new class 還是dim xxx as new class
就是這樣VB.NET函數(shù)調(diào)用將更簡(jiǎn)單,不須要研究一些很難的東西。