Opcional (Visual Basic)
Especifica que um argumento de procedimento pode ser omitido quando o procedimento é chamado.
Observações
Para cada parâmetro opcional, você deve especificar uma expressão constante como o valor padrão desse parâmetro. Se a expressão for avaliada como Nothing, o valor padrão do tipo de dados value será usado como o valor padrão do parâmetro.
Se a lista de parâmetros contiver um parâmetro opcional, todos os parâmetros que a seguem também deverão ser opcionais.
O Optional
modificador pode ser usado nestes contextos:
Nota
Ao chamar um procedimento com ou sem parâmetros opcionais, você pode passar argumentos por posição ou por nome. Para obter mais informações, consulte Passando argumentos por posição e por nome.
Nota
Você também pode definir um procedimento com parâmetros opcionais usando sobrecarga. Se você tiver um parâmetro opcional, poderá definir duas versões sobrecarregadas do procedimento, uma que aceite o parâmetro e outra que não aceite. Para obter mais informações, consulte Sobrecarga de procedimento.
Exemplo 1
O exemplo a seguir define um procedimento que tem um parâmetro opcional.
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
Exemplo 2
O exemplo a seguir demonstra como chamar um procedimento com argumentos passados por posição e com argumentos passados por nome. O procedimento tem dois parâmetros opcionais.
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