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
Subou instruçãoFunctionque inclua o parâmetro opcional na lista de parâmetros. Não use aOptionalpalavra-chave nesta versão sobrecarregada.Preceda a palavra-chave
SubouFunctioncom 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 SubouEnd Functionconforme 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 SubouEnd Functionconforme 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
SubouFunctionque defina a lista de parâmetros correspondente. Não use aOptionalpalavra-chave.Em cada declaração, preceda a palavra-chave
SubouFunctioncom 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 SubouEnd Functionconforme 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