Como: Sobrecarregar um procedimento que recebe um número indefinido de parâmetros (Visual Basic)

Se um procedimento tem um ParamArray (Visual Basic) parâmetro, não é possível definir uma sobrecarregada versão levando uma-uma matriz dimensional para o parâmetro matriz. Para obter mais informações, consulte "Implícito sobrecargas para um parâmetro ParamArray" in Considerações sobre procedimentos de sobrecarga (Visual Basic).

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

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

  2. Determine quais números de valores fornecidos deve aceitar o procedimento na parte variável da lista de parâmetro . Isso pode incluir o caso de nenhum valor e pode incluir o caso de um único uma-matriz dimensional.

  3. Para cada número aceitável de valores fornecidos, escrever um Sub ou Functiondemonstrativo dedeclaraçãoque define a lista de parâmetro correspondente. Não use nenhum o Optional ou ParamArraysobrecarregado depalavra-chave dessa versão.

  4. In each declaration, precede the Sub or Function keyword with the Sobrecargas (Visual Basic) keyword.

  5. Após cada declaração, escreva o código do procedimento deve executar quando o código de chamada fornece os valores correspondentes para a declaraçãoda lista de parâmetro .

  6. Terminate each procedure with the End Sub or End Function statement as appropriate.

Exemplo

O exemplo a seguir mostra um procedimento definido com um ParamArray (Visual Basic) parâmetroe 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.

You cannot overload such a procedure with a parameter list that takes a one-dimensional array for the parameter array. However, you can use the signatures of the other implicit overloads. The following declarations illustrate this.

' 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 nas versões sobrecarregadas tem para teste se o código de chamada fornecido um ou mais valores para o ParamArray parâmetro, ou em caso afirmativo, como muitos. Visual Basicpassa o controle para a versão correspondente da lista de argumento de chamada.

Compilando o código

Porque um procedimento com um ParamArray parâmetro é equivalente a um conjunto de versões sobrecarregadas, você não pode sobrecarga tais um procedimento com uma lista de parâmetro correspondentes a qualquer uma dessas sobrecargas implícito. For more information, see Considerações sobre procedimentos de sobrecarga (Visual Basic).

Segurança

Whenever you deal with an array which can be indefinitely large, there is a risk of overrunning some internal capacity of your application. Se você aceitar uma matriz de parâmetro , você deve teste o comprimento da matriz, o código de chamada transmitidos a ele e execute as etapas apropriadas se for muito grande para 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 recebe 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)