Partilhar via


Parâmetros opcionais (Visual Basic)

Você pode especificar que um parâmetro procedure é opcional e nenhum argumento precisa ser fornecido para ele quando o procedimento é chamado. Os parâmetros opcionais são indicados pela Optional palavra-chave na definição do procedimento. Aplicam-se as seguintes regras:

  • Cada parâmetro opcional na definição de procedimento deve especificar um valor padrão.

  • O valor padrão para um parâmetro opcional deve ser uma expressão constante.

  • Todos os parâmetros que seguem um parâmetro opcional na definição do procedimento também devem ser opcionais.

A sintaxe a seguir mostra uma declaração de procedimento com um parâmetro opcional:

Sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)  

Procedimentos de chamada 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 usará o valor padrão declarado para esse parâmetro.

Ao omitir um ou mais argumentos opcionais na lista de argumentos, você usa vírgulas sucessivas para marcar suas posições. A chamada de exemplo a seguir fornece o primeiro e o quarto argumentos, mas não o segundo ou o terceiro:

Sub name(argument 1, , , argument 4)  

O exemplo a seguir faz várias chamadas para a MsgBox função. MsgBox tem um parâmetro necessário e dois parâmetros opcionais.

A primeira chamada para MsgBox fornece os três argumentos na ordem que MsgBox os define. A segunda chamada fornece apenas o argumento necessário. O terceiro e quarto convites fornecem o primeiro e o terceiro argumentos. A terceira chamada faz isso por posição, e a quarta chamada faz isso pelo 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 detetar em tempo de execução se um determinado argumento foi omitido ou se o código de chamada forneceu explicitamente o valor padrão. Se você precisar fazer essa distinção, poderá definir um valor improvável como padrão. O procedimento a seguir define o parâmetro officeopcional 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 um String, você poderá usar Nothing como o valor padrão, desde que esse 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 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. Esta 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