指定呼叫程式時可以省略程式自變數。
備註
對於每個選擇性參數,您必須將常數表達式指定為該參數的預設值。 如果表達式評估為 Nothing,則會使用 value 數據類型的預設值作為參數的預設值。
如果參數清單包含選擇性參數,則後面的每個參數也必須是選擇性參數。
Optional修飾詞可用於下列內容:
備註
呼叫具有或不含選擇性參數的程式時,您可以依位置或名稱傳遞自變數。 如需詳細資訊,請參閱 依位置和名稱傳遞自變數。
備註
您也可以使用多載來定義具有選擇性參數的程式。 如果您有一個選擇性參數,您可以定義兩個多載版本的程式,一個接受 參數,另一個不接受。 如需詳細資訊,請參閱 程式多載。
範例 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