Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 declaração
Sub
ou instruçãoFunction
que inclua o parâmetro opcional na lista de parâmetros. Não use aOptional
palavra-chave nesta versão sobrecarregada.Preceda a palavra-chave
Sub
ouFunction
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
End Sub
ouEnd Function
conforme apropriado.Escreva uma segunda instrução de declaração idêntica à primeira declaração, exceto por não incluir 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
End Sub
ouEnd Function
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 aceita o nome de uma pessoa e outro aceita 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 declaração
Sub
ouFunction
que defina a lista de parâmetros correspondente. Não use aOptional
palavra-chave.Em cada declaração, preceda a palavra-chave
Sub
ouFunction
com 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.
Terminar cada procedimento com a instrução
End Sub
ouEnd Function
conforme apropriado.
Consulte também
- Procedimentos
- Parâmetros e Argumentos de Procedimento
- parâmetros opcionais
- Matrizes de Parâmetros
- Sobrecarga de procedimento
- Solução de 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