Como: Um procedimento que tem um número indefinida de parâmetros de sobrecarga
Se um procedimento tem um ParamArray parâmetro, não é possível definir uma versão sobrecarregada tirando uma matriz unidimensional para a matriz de parâmetro. Para obter mais informações, consulte "Implícita Overloads para um ParamArray parâmetro" emConsiderações sobre Procedimentos de Sobrecarga.
Para sobrecarga um procedimento que leva um número variável de parâmetros
Verificar que a lógica de código do procedimento e chamada beneficia versões sobrecarregadas mais de um ParamArray parâmetro. Consulte "Overloads e ParamArrays"Considerações sobre Procedimentos de Sobrecarga.
Determinar quais números de valores fornecidos deve aceitar o procedimento na parte de variável a parâmetro lista.Isso pode incluir o caso de nenhum valor e pode incluir o caso de uma única matriz unidimensional.
Para cada número aceitável de valores fornecidos, gravar um Sub ou Function demonstrativo de demonstrativo que define a lista de parâmetros correspondentes. Não use ambos o Optional ou o ParamArray palavra-chave nesta versão sobrecarregada.
Em cada declaração, preceda a palavra-chave Sub ou Function com a palavra-chave Sobrecargas.
Após cada declaração, escreva o código do procedimento que deve ser executado quando o código de chamada fornece valores correspondentes a lista de parâmetros dessa declaração.
Termine cada procedimento com a declaração End Sub ou End Function como apropriado.
Exemplo
O exemplo a seguir mostra um procedimento definido com um ParamArray parâmetro e, em seguida, um conjunto equivalente de procedimentos sobrecarregados.
Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads.
' Overloads Sub p(ByVal d As Date)
' Overloads Sub p(ByVal d As Date, ByVal c() As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char)
' And so on, with an additional Char argument in each successive overload.
Você não pode sobrecarregar tal procedimento com uma lista de parâmetros que leva um matriz unidimensional para a matriz de parâmetros.No entanto, você pode usar as assinaturas das outras sobrecargas implícitas.As seguintes declarações ilustram isto.
' The following overload is not valid because it takes an array for the parameter array.
' Overloads Sub p(ByVal x As Date, ByVal y() As Char)
' The following overload takes a single value for the parameter array and is valid.
Overloads Sub p(ByVal z As Date, ByVal w As Char)
O código em versões sobrecarregadas não precisa teste se o código de chamada fornecido um ou mais valores de ParamArray parâmetro, ou em caso afirmativo, quantas. Visual Basic passa o controle para a versão correspondente a lista de argumentos de chamada.
Compilando o código
Porque um procedimento com um ParamArray o parâmetro é equivalente a um conjunto de versões sobrecarregadas, não podem sobrecarregar tal um procedimento com uma lista de parâmetros correspondentes a qualquer um dessas sobrecargas implícitas. Para obter mais informações, consulte Considerações sobre Procedimentos de Sobrecarga.
Segurança
Sempre que você lidar com uma matriz que pode ser indefinidamente grande, há um risco de ultrapassar alguma capacidade interna da sua aplicação.Se você aceitar uma matriz de parâmetro, você deve testar o comprimento da matriz o código de chamada passou a ele e execute as etapas apropriadas se ele for muito grande para o seu aplicativo.
Consulte também
Tarefas
Solucionando problemas de procedimentos
Como: Definir diversas versões de um procedimento
Como: Chamar um procedimento sobrecarregado
Como: Um procedimento que tem parâmetros opcionais de sobrecarga