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 correspondente 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
com a palavra-chave Overloads .Escreva o código de procedimento que deve ser executado quando o código de chamada fornece o argumento opcional.
Encerre o procedimento com a
End Sub
declaração ouEnd Function
conforme apropriado.Escreva uma segunda instrução de declaração que seja 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 fornece o argumento opcional. Encerre o procedimento com a
End Sub
declaração 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, finalmente, 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 achar 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 pode 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 forneçam a idade, mas omitam 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 utilize a palavra-chaveOptional
.Em cada declaração, preceda a
Sub
palavra-chave 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.
Encerre cada procedimento com a
End Sub
declaração ouEnd Function
conforme apropriado.
Consulte também
- Procedimentos
- Parâmetros e argumentos do procedimento
- Parâmetros opcionais
- Matrizes de parâmetros
- Sobrecarga de procedimentos
- Procedimentos de solução de problemas
- Como: Definir várias versões de um procedimento
- Como: Chamar um procedimento sobrecarregado
- Como: Sobrecarregar um procedimento que leva um número indefinido de parâmetros
- Resolução de sobrecarga