Valfritt (Visual Basic)
Anger att ett procedurargument kan utelämnas när proceduren anropas.
Kommentarer
För varje valfri parameter måste du ange ett konstant uttryck som standardvärde för parametern. Om uttrycket utvärderas till Ingenting används standardvärdet för värdedatatypen som standardvärde för parametern.
Om parameterlistan innehåller en valfri parameter måste varje parameter som följer den också vara valfri.
Modifieraren Optional
kan användas i följande sammanhang:
Kommentar
När du anropar en procedur med eller utan valfria parametrar kan du skicka argument efter position eller efter namn. Mer information finns i Skicka argument efter position och efter namn.
Kommentar
Du kan också definiera en procedur med valfria parametrar med hjälp av överlagring. Om du har en valfri parameter kan du definiera två överlagrade versioner av proceduren, en som accepterar parametern och en som inte gör det. Mer information finns i Överlagring av procedurer.
Exempel 1
I följande exempel definieras en procedur som har en valfri parameter.
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
Exempel 2
I följande exempel visas hur du anropar en procedur med argument som skickas efter position och med argument som skickas med namn. Proceduren har två valfria parametrar.
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