Optional (Visual Basic)
Specifica che un argomento di routine può essere omesso quando la routine viene chiamata.
Osservazioni:
Per ogni parametro facoltativo, è necessario specificare un'espressione costante come valore predefinito di tale parametro. Se l'espressione restituisce Nothing, il valore predefinito del tipo di dati valore viene usato come valore predefinito del parametro.
Se l'elenco di parametri contiene un parametro facoltativo, anche ogni parametro che segue deve essere facoltativo.
Il modificatore Optional
può essere usato nei contesti seguenti:
Nota
Quando si chiama una routine con o senza parametri facoltativi, è possibile passare argomenti per posizione o per nome. Per altre informazioni, vedere Passaggio di argomenti per posizione e per nome.
Nota
È anche possibile definire una routine con parametri facoltativi usando l'overload. Se si dispone di un parametro facoltativo, è possibile definire due versioni di overload della procedura, una che accetta il parametro e una che non lo accetta. Per altre informazioni, vedere Procedure Overloading.
Esempio 1
Nell'esempio seguente viene definita una routine con un parametro facoltativo.
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
Esempio 2
Nell'esempio seguente viene illustrato come chiamare una routine con argomenti passati per posizione e con argomenti passati per nome. La procedura include due parametri facoltativi.
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