Optional (Visual Basic)

指定呼叫程序時,可以省略程序引數。

備註

針對每個選擇性參數,您必須將常數運算式指定為該參數的預設值。 如果運算式評估為 Nothing,則會使用實值資料類型的預設值作為參數的預設值。

如果參數清單包含選擇性參數,則其後面的每個參數也必須是選擇性參數。

Optional 修飾詞可用於以下內容:

注意

呼叫包含或不包含選擇性參數的程序時,您都可以依位置或名稱傳遞引數。 如需詳細資訊,請參閱依位置或名稱傳遞引數

注意

您也可以使用多載來定義含選擇性參數的程序。 如果您有一個選擇性參數,可以定義程序的兩個多載版本,其中一個接受該參數,而另一個則不接受。 如需詳細資訊,請參閱 Procedure Overloading

範例 1

下列範例會定義包含選擇性參數的程序。

Public Function FindMatches(ByRef values As List(Of String),
                            ByVal searchString As String,
                            Optional ByVal matchCase As Boolean = False) As List(Of String)

    Dim results As IEnumerable(Of String)

    If matchCase Then
        results = From v In values
                  Where v.Contains(searchString)
    Else
        results = From v In values
                  Where UCase(v).Contains(UCase(searchString))
    End If

    Return results.ToList()
End Function

範例 2

下列範例示範如何使用依位置傳遞的引數以及依名稱傳遞的引數呼叫程序。 此程序有兩個選擇性參數。

Private Sub TestParameters()
    ' Call the procedure with its arguments passed by position,
    studentInfo("Mary", 19, #9/21/1981#)

    ' Omit one optional argument by holding its place with a comma.
    studentInfo("Mary", , #9/21/1981#)

    ' Call the procedure with its arguments passed by name.
    studentInfo(age:=19, birth:=#9/21/1981#, name:="Mary")

    ' Supply an argument by position and an argument by name.
    studentInfo("Mary", birth:=#9/21/1981#)
End Sub

Private Sub studentInfo(ByVal name As String,
   Optional ByVal age As Short = 0,
   Optional ByVal birth As Date = #1/1/2000#)

    Console.WriteLine("name: " & name)
    Console.WriteLine("age: " & age)
    Console.WriteLine("birth date: " & birth)
    Console.WriteLine()
End Sub

另請參閱