Como: Determine se foi fornecido um parâmetro opcional
Quando um procedimento define um parâmetro opcional, pode ser necessário determinar se ou não o código de chamada tem fornecido no argumento correspondente ou omitido-lo.
Se o valor do parâmetro compara igual ao seu valor padrão, isso pode ser para uma das duas razões possíveis:
O código de telefonar omitido o argumento na telefonar de procedimento; ou
O código de chamada fornecido o argumento com um valor exatamente igual ao valor padrão do parâmetro.
O código do procedimento não consegue distinguir entre essas duas possibilidades.Geralmente, não importa, mas em alguns casos o procedimento talvez precise executar ações diferentes para cada possibilidade.A melhor abordagem disponível é definir um valor improvável sistema autônomo padrão, embora isso não garante que o código de chamada não pode fornecer.
Se for importante estar absolutamente certo se o programa de chamada fornecido um argumento opcional, a abordagem mais segura é definir versões sobrecarregadas do procedimento.Consulte Como: Definir diversas versões de um procedimento e Considerações sobre Procedimentos de Sobrecarga.
Para determinar se um argumento foi passado para um parâmetro opcional
Defina um valor extremamente improvável sistema autônomo padrão para o parâmetro.
Se o parâmetro opcional é um tipo de referência como umq String, você pode usar Nothing como a valor padrão, desde que não seja um valor esperado para o argumento.
No código de procedimento, comparar o parâmetro com o valor padrão e toma a ação apropriada.
Sobrecarga de um procedimento com e sem um parâmetro opcional
Outra maneira para definir um procedimento com parâmetros opcionais é usar a sobrecarga.Se você tiver um parâmetro opcional, você pode definir duas versões sobrecarregadas do procedimento, um aceitar o parâmetro e um não aceitá-lo.Essa abordagem torna-se mais complicada a 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.
Para definir diferentes versões do procedimento para inclusão de capa e a omissão de um argumento
Definir uma versão do procedimento com o parâmetro de argumento lista.Não declarará o parâmetro sistema autônomo Optional.
Defina outra versão do procedimento sem o parâmetro.A declaração deve ser idêntica da primeira versão em todos os outros aspectos.
Coloque o código apropriado para cada telefonar na versão do procedimento respectiva.
Exemplo
O procedimento a seguir define o parâmetro opcional officee testes para o valor padrão, QJZ, para ver se foi omitido na telefonar.
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 código em execução não fornece um valor para office na lista de agumentos, Visual Basic fornece o valor-padrão de "QJZ".
Se o parâmetro opcional é um tipo de referência como umq String, você pode usar Nada (Visual Basic) como a valor padrão, desde que não seja um valor esperado para o argumento.
Para obter um exemplo do uso de sobrecargas para determinar se foi passado um parâmetro opcional, consulte Como: Um procedimento que tem parâmetros opcionais de sobrecarga.
Consulte também
Tarefas
Como: Definir parâmetros opcionais para um procedimento
Como: telefonar um procedimento que tem parâmetros opcionais
Conceitos
Parâmetros do procedimento e argumentos
Argumento Passing By valor e por referência
Passagem de Argumentos por Posição e Nome