Parâmetros opcionais (Visual Basic)
Você pode especificar que um parâmetro de procedimento é opcional e nenhum argumento precisa ser fornecido para ele quando o procedimento é chamado. Parâmetros opcionais são indicados pela palavra-chave Optional na definição do procedimento. As seguintes regras se aplicam:
Cada parâmetro opcional na definição do procedimento deve especificar um valor padrão.
O valor padrão para um parâmetro opcional deve ser uma expressão constante.
Todo parâmetro após um parâmetro opcional na definição do procedimento também deve ser opcional.
A sintaxe a seguir mostra uma declaração de procedimento com um parâmetro opcional:
Sub sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)
Chamando procedimentos com parâmetros opcionais
Ao chamar um procedimento com um parâmetro opcional, você pode escolher se deseja fornecer o argumento. Caso contrário, o procedimento usa o valor padrão declarado para esse parâmetro.
Ao omitir um ou mais argumentos opcionais no lista de argumentos, você use sucessivas vírgulas para marcar as posições. A chamada de exemplo a seguir fornece o primeiro e o quarto argumentos, mas não o segundo ou terceiro:
sub name(argument 1, , , argument 4)
O exemplo a seguir faz várias chamadas para a função MsgBox. MsgBox tem um parâmetro obrigatório e dois parâmetros opcionais.
A primeira chamada para MsgBox fornece todos os três argumentos na ordem que MsgBox os define. A segunda chamada fornece apenas o argumento necessário. A terceira e a quarta chamadas fornecem o primeiro e o terceiro argumentos. A terceira chamada faz isso por posição, e a quarta chamada faz isso por nome.
MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")
Determinando se um argumento opcional está presente
Um procedimento não pode detectar no tempo de execução se um determinado argumento foi omitido ou o código de chamada forneceu explicitamente o valor padrão. Se você precisar fazer essa distinção, defina um valor improvável como o padrão. O procedimento a seguir define o parâmetro opcional office e testa seu valor padrão, QJZ, para ver se ele foi omitido na chamada:
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters"
End If
' Insert code to notify headquarters or specified office.
End Sub
Se o parâmetro opcional for um tipo de referência como String, você poderá usar Nothing como valor padrão, desde que não seja um valor esperado para o argumento.
Parâmetros opcionais e sobrecarga
Outra maneira de definir um procedimento com parâmetros opcionais é usar a sobrecarga. Se você tiver um parâmetro opcional, poderá definir duas versões sobrecarregadas do procedimento, uma aceitando o parâmetro e outra sem ele. Essa abordagem torna-se mais complicada à medida que o número de parâmetros opcionais aumenta. No entanto, sua vantagem é que você pode ter certeza absoluta se o programa de chamada forneceu cada argumento opcional.
Consulte também
Referência
Conceitos
Parâmetros e argumentos de procedimento (Visual Basic)
Passando argumentos por valor e por referência (Visual Basic)
Passando argumentos por posição e nome (Visual Basic)