Compartilhar via


Como sobrecarregar um procedimento que use um número indefinido de parâmetros (Visual Basic)

Se um procedimento tiver um ParamArray (Visual Basic) parâmetro, você não pode definir uma versão sobrecarregada, levando a uma matriz unidimensional para a matriz de parâmetros. Para obter mais informações, consulte "Implícito sobrecargas para um parâmetro ParamArray" em Considerações sobre procedimentos de sobrecarga (Visual Basic).

Para sobrecarregar um procedimento que leva a um número variável de parâmetros

  1. Verificar que o procedimento e chamando os benefícios de lógica do código de sobrecarregados versões a partir de mais de um ParamArray parâmetro. Consulte "Sobrecargas e ParamArrays" em Considerações sobre procedimentos de sobrecarga (Visual Basic).

  2. Determine quais números de valores fornecidos deve aceitar o procedimento na variável parte da lista de parâmetros. Isso pode incluir o caso de nenhum valor, e pode incluir o caso de uma única matriz unidimensional.

  3. Para cada número aceitável de valores fornecidos, escrever um Sub ou Function instrução de declaração que define a lista de parâmetros correspondentes. Não use nenhum a Optional ou o ParamArray palavra-chave nesta versão sobrecarregada.

  4. Em cada declaração, preceda a palavra-chave Sub ou Function com a palavra-chave Sobrecargas (Visual Basic).

  5. Após cada declaração, escreva o código de procedimento que deve ser executado quando o código de chamada fornece os valores correspondentes à lista de parâmetros dessa declaração.

  6. 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 (Visual Basic) 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)

Não tem o código nas versões sobrecarregadas testar se o código de chamada fornecido um ou mais valores para o ParamArray parâmetro, ou em caso afirmativo, quantos. Visual Basicpassa o controle para a versão da lista de argumentos de chamada de correspondência.

Compilando o código

Porque um procedimento com um ParamArray parâmetro é equivalente a um conjunto de versões sobrecarregadas, você não pode 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 (Visual Basic).

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âmetros, você deve testar o comprimento da matriz o código de chamada é passado para ele e execute as etapas apropriadas se ele for muito grande para o seu aplicativo.

Consulte também

Tarefas

Solucionando problemas de procedimentos (Visual Basic)

Como definir várias versões de um procedimento (Visual Basic)

Como chamar um procedimento sobrecarregado (Visual Basic)

Como sobrecarregar um procedimento que usa parâmetros opcionais (Visual Basic)

Conceitos

Procedimentos no Visual Basic

Parâmetros e argumentos de procedimento (Visual Basic)

Parâmetros opcionais (Visual Basic)

Matrizes de parâmetros (Visual Basic)

Sobrecarga de procedimento (Visual Basic)

Resolução de sobrecarga (Visual Basic)