Optional (Visual Basic)
Gibt an, dass ein Prozedurargument beim Aufrufen der Prozedur ausgelassen werden kann.
Bemerkungen
Für jeden optionalen Parameter müssen Sie einen Konstantenausdruck als Standardwert dieses Parameters angeben. Wenn der Ausdruck als Nothingausgewertet wird, wird der Standardwert des Wertdatentyps als Standardwert des Parameters verwendet.
Wenn die Parameterliste einen optionalen Parameter enthält, muss jeder folgende Parameter ebenfalls optional sein.
Der Optional
-Modifizierer kann in folgenden Kontexten verwendet werden:
Hinweis
Beim Aufrufen einer Prozedur mit oder ohne optionale Parameter können Sie Argumente nach Position oder nach Name übergeben. Weitere Informationen finden Sie unter Übergeben von Argumenten nach Position und nach Name.
Hinweis
Sie können auch eine Prozedur mit optionalen Parametern definieren, indem Sie eine Überladung verwenden. Wenn ein optionaler Parameter vorhanden ist, können Sie zwei überladene Versionen der Prozedur definieren, eine mit und eine ohne Parameter. Weitere Informationen finden Sie unter Procedure Overloading.
Beispiel 1
Im folgenden Beispiel wird eine Prozedur definiert, die über einen optionalen Parameter verfügt.
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
Beispiel 2
Im folgenden Beispiel wird veranschaulicht, wie eine Prozedur mit Argumenten aufgerufen wird, die nach Position übergeben werden, und mit Argumenten, die nach Namen übergeben werden. Die Prozedur verfügt über zwei optionale Parameter.
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