選擇性參數 (Visual Basic)

您可以將程序參數指定為選擇項,當該程序被呼叫時就不必提供引數。 「選擇性參數」(Optional Parameter) 在程序定義中是由 Optional 關鍵字表示, 可套用下列規則:

  • 程序定義中的每一個選擇性參數都必須指定一個預設值。

  • 選擇性參數的預設值必須是常數運算式。

  • 在程序定義中,每一個跟在選擇性參數之後的參數也必須是選擇項。

以下的語法顯示具有選擇性參數的程序宣告:

Sub sub name(ByVal parameter 1 As data type 1, Optional ByVal parameter 2 As data type 2 = default value)

以選擇性參數呼叫程序

當您以選擇性參數呼叫程序時,可以選擇是否提供引數。 如果不提供,則該程序會使用該參數所宣告的預設值。

當您省略引數清單中的一個或多個選擇性引數時,必須用連續逗號來標示它們的位置。 下列呼叫範例提供第一個和第四個引數,而不提供第二個或第三個引數:

Call sub name(argument 1, , , argument 4)

判斷是否有選擇性引數

程序在執行階段時無法偵測指定的引數是否已省略,或者呼叫程式碼已明確提供預設值。 如果您需要有所區別,可以將一個不常用的值設定為預設值。 下列程序定義選擇性參數 office,並測試其預設值 QJZ,以瞭解是否在呼叫中將其省略:

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

如果選擇性參數是 String 之類的參考型別,您就可以用 Nothing 做為預設值,只要不是引數需要的值即可。

選擇性參數和多載化

另一個用選擇性參數定義程序的方式是使用多載化 (Overloading)。 如果您有一個選擇性參數,您可以定義程序的兩個多載版本,其中一個接受該參數,而另一個則不接受。 隨著選擇性參數數目的增加,這個方法會變得比較複雜。 但是,它的優點是可以完全確定呼叫程式是否提供每一個選擇性引數。

請參閱

工作

HOW TO:為程序定義選擇性參數 (Visual Basic)

HOW TO:呼叫使用選擇性參數的程序 (Visual Basic)

HOW TO:決定是否提供選擇性參數 (Visual Basic)

參考

Optional (Visual Basic)

ParamArray (Visual Basic)

概念

Visual Basic 中的程序

程序參數和引數 (Visual Basic)

以傳值和傳址方式傳遞引數 (Visual Basic)

依位置和名稱傳遞引數 (Visual Basic)

參數陣列 (Visual Basic)

程序多載化 (Visual Basic)