Como sobrecarregar um procedimento que usa parâmetros opcionais (Visual Basic)
Se um procedimento tiver um ou mais parâmetros opcionais, você não poderá definir uma versão sobrecarregada que corresponda a qualquer uma de suas sobrecargas implícitas. Para obter mais informações, consulte "Sobrecargas implícitas para parâmetros opcionais" em considerações sobre procedimentos de sobrecarga.
Um parâmetro opcional
Para sobrecarregar um procedimento que usa um parâmetro opcional
Escreva uma
Sub
instrução ouFunction
declaração que inclua o parâmetro opcional na lista de parâmetros. Não use aOptional
palavra-chave nesta versão sobrecarregada.Preceda a
Sub
palavra-chave ouFunction
a palavra-chave com a palavra-chave Overloads.Escreva o código de procedimento que deve ser executado quando o código de chamada fornecer o argumento opcional.
Encerre o procedimento com a instrução ou
End Sub
aEnd Function
instrução conforme apropriado.Escreva uma segunda instrução de declaração idêntica à primeira declaração, exceto que ela não inclui o parâmetro opcional na lista de parâmetros.
Escreva o código de procedimento que deve ser executado quando o código de chamada não fornecer o argumento opcional. Encerre o procedimento com a instrução ou
End Sub
aEnd Function
instrução conforme apropriado.O exemplo a seguir mostra um procedimento definido com um parâmetro opcional, um conjunto equivalente de dois procedimentos sobrecarregados e, por fim, exemplos de versões sobrecarregadas inválidas e válidas.
Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
' The preceding definition is equivalent to the following two overloads. ' Overloads Sub q(ByVal b As Byte) ' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
' Therefore, the following overload is not valid because the signature is already in use. ' Overloads Sub q(ByVal c As Byte, ByVal k As Long) ' The following overload uses a different signature and is valid. Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)
Vários parâmetros opcionais
Para um procedimento com mais de um parâmetro opcional, você normalmente precisa de mais de duas versões sobrecarregadas. Por exemplo, se houver dois parâmetros opcionais e o código de chamada puder fornecer ou omitir cada um independentemente do outro, você precisará de quatro versões sobrecarregadas, uma para cada combinação possível de argumentos fornecidos.
À medida que o número de parâmetros opcionais aumenta, a complexidade da sobrecarga aumenta. A menos que algumas combinações de argumentos fornecidos não sejam aceitáveis, para N parâmetros opcionais você precisa de 2 ^ N versões sobrecarregadas. Dependendo da natureza do procedimento, você pode descobrir que a clareza da lógica justifica o esforço extra de definir todas as versões sobrecarregadas.
Para sobrecarregar um procedimento que usa mais de um parâmetro opcional
Determine quais combinações de argumentos opcionais fornecidos são aceitáveis para a lógica do procedimento. Uma combinação inaceitável poderá surgir se um parâmetro opcional depender de outro. Por exemplo, se um parâmetro aceitar o nome de uma pessoa e outro aceitar a idade da pessoa, uma combinação de argumentos que fornecem a idade, mas omitir o nome é inaceitável.
Para cada combinação aceitável de argumentos opcionais fornecidos, escreva uma
Sub
instrução ouFunction
declaração que defina a lista de parâmetros correspondente. Não use a palavra-chaveOptional
.Em cada declaração, preceda a
Sub
palavra-chave ouFunction
a palavra-chave Overloads.Após cada declaração, escreva o código de procedimento que deve ser executado quando o código de chamada fornecer uma lista de argumentos correspondente à lista de parâmetros dessa declaração.
Encerre cada procedimento com a instrução ou
End Sub
aEnd Function
instrução conforme apropriado.
Confira também
- Procedimentos
- Parâmetros e Argumentos de Procedimento
- Parâmetros Opcionais
- Matrizes de Parâmetros
- Sobrecarga de procedimento
- Solucionando problemas de procedimentos
- Como definir várias versões de um procedimento
- Como chamar um procedimento sobrecarregado
- Como sobrecarregar um procedimento que usa um número indefinido de parâmetros
- Resolução de Sobrecarga