Como: Determinar se um parâmetro opcional foi fornecido (Visual Basic)
Quando um procedimento define um parâmetrode opcional, talvez seja necessário determinar ou não o código de chamada tiver fornecido o argumento correspondente ou omitido, ele.
Se o valor do parâmetro compara igual ao seu valor padrão, isso poderia ser para uma das duas razões possíveis:
O código de chamada omitido o argumento na chamada de procedimento ; ou
O código de chamada fornecido o argumento com um valor do parâmetro valor padrãoexatamente igual.
O código do procedimento não consegue distinguir entre essas duas possibilidades. Geralmente, não importa, mas em alguns casos, o procedimento pode ser necessário executar ações diferentes para cada possibilidade. A abordagem melhor é definir um valor improvável como padrão, embora isso não garante que o código de chamada não pode fornecer a ele.
Se for importante ser absolutamente certo se o programa de chamada fornecido pelo argumentoopcional, a abordagem mais segura é definir versões sobrecarregadas do procedimento. See Como: Definir várias versões de um procedimento (Visual Basic) and Considerações sobre procedimentos de sobrecarga (Visual Basic).
Para determinar se um argumento foi passado para um parâmetrode opcional
Defina um valor extremamente improvável como padrão para o parâmetro.
If the optional parameter is a reference type such as a String, you can use Nothing as the default value, provided this is not an expected value for the argument.
O código do procedimento , o parâmetro com o valor padrão de comparar e toma a ação apropriada.
Sobrecarga de um procedimento com e sem um parâmetro Opcional
Another way to define a procedure with optional parameters is to use overloading. Se você tiver um parâmetrode opcionais, você pode definir duas versões sobrecarregadas do procedimento, o parâmetro de aceitar um e um não aceitá-lo. This approach becomes more complicated as the number of optional parameters increases. However, its advantage is that you can be absolutely sure whether the calling program supplied each optional argument.
Para definir as diferentes versões do procedimento para a inclusão de folha de rosto e a omissão de um argumento
Defina uma versão do procedimento com o parâmetro na lista de argumento . Não é declarar o parâmetro como Optional.
Defina outra versão do procedimento sem o parâmetro. A declaração deve ser idêntico da primeira versão em todos os outros aspectos.
Coloque o código apropriado para cada chamada na respectiva versão do procedimento.
Exemplo
O procedimento a seguir define o parâmetroopcionalofficee testes para o seu valor padrão, QJZ, para ver se foi omitida 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 código de chamada não fornecer um valor para office na lista do argumento , Visual Basic fornece o valor padrão de "qjz".
If the optional parameter is a reference type such as a String, you can use Nada (Visual Basic) as the default value, provided this is not an expected value for the argument.
Para obter um exemplo do uso de sobrecargas para determinar se um parâmetro de opcional foi passou, consulte Como: Sobrecarregar um procedimento que recebe parâmetros opcionais (Visual Basic).
Consulte também
Tarefas
Como: Definir parâmetros opcionais para um procedimento (Visual Basic)
Como: Chamar um procedimento que recebe parâmetros opcionais (Visual Basic)
Referência
Conceitos
Parâmetros e argumentos de procedimento (Visual Basic)
Passando argumentos por valor e por referência (Visual Basic)
Passagem de argumentos por posição e nome (Visual Basic)
Parâmetros opcionais (Visual Basic)