Matrizes de parâmetros (Visual Basic)

Normalmente, você não pode chamar um procedimento com mais argumentos do que a declaração de procedimento especifica.Quando você precisar de um número indefinido de argumentos, você pode declarar um matriz de parâmetros, que permite que um procedimento aceitar uma matriz de valores para um parâmetro.Você não precisa saber o número de elementos na matriz de parâmetros ao definir o procedimento.O tamanho da matriz é determinado individualmente por cada chamada ao procedimento.

Declarando um ParamArray.

Você pode usar o ParamArray (Visual Basic) palavra-chave para denotar uma matriz de parâmetro na lista de parâmetros.As seguintes regras se aplicam:

  • Um procedimento pode definir apenas uma matriz de parâmetros e deve ser o último parâmetro na definição de procedimento.

  • Matriz de parâmetros deve ser passado por valor.É uma boa prática para incluir explicitamente de programação do ByVal (Visual Basic) palavra-chave na definição de procedimento.

  • Matriz de parâmetros é automaticamente opcional.O valor padrão é uma matriz unidimensional vazia do tipo de elemento da matriz de parâmetros.

  • Todos os parâmetros que precede a matriz de parâmetros devem ser obrigatórios.Matriz de parâmetros deve ser o parâmetro opcional somente.

Chamando um ParamArray.

Quando você chama um procedimento que define uma matriz de parâmetros, você pode fornecer o argumento em qualquer uma das seguintes maneiras:

  • Nada — ou seja, você pode omitir a ParamArray (Visual Basic) argumento.Nesse caso, uma matriz vazia é passada para o procedimento.Você também pode passar o Nada (Visual Basic) palavra-chave, com o mesmo efeito.

  • Uma lista de um número arbitrário de argumentos, separados por vírgulas.O tipo de dados de cada argumento deve ser implicitamente conversível ao tipo de elemento ParamArray.

  • Uma matriz com o mesmo tipo de elemento, como o tipo de elemento da matriz de parâmetros.

Em todos os casos, o código dentro do procedimento trata a matriz de parâmetros como uma matriz unidimensional com elementos do mesmo tipo de dados como o ParamArray tipo de dados.

Observação de segurançaObservação de 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 tamanho da matriz que o código de chamada é passado para ele.Execute as etapas apropriadas se ele for muito grande para o seu aplicativo.Para mais informações, consulte Matrizes em Visual Basic.

Exemplo

O exemplo a seguir define e chama a função calcSum.O ParamArray modificador para o parâmetro args permite que a função aceite um número variável de argumentos.

Module Module1

    Sub Main()
        ' In the following function call, calcSum's local variables 
        ' are assigned the following values: args(0) = 4, args(1) = 3, 
        ' and so on. The displayed sum is 10.
        Dim returnedValue As Double = calcSum(4, 3, 2, 1)
        Console.WriteLine("Sum: " & returnedValue)
        ' Parameter args accepts zero or more arguments. The sum 
        ' displayed by the following statements is 0.
        returnedValue = calcSum()
        Console.WriteLine("Sum: " & returnedValue)
    End Sub

    Public Function calcSum(ByVal ParamArray args() As Double) As Double
        calcSum = 0
        If args.Length <= 0 Then Exit Function
        For i As Integer = 0 To UBound(args, 1)
            calcSum += args(i)
        Next i
    End Function

End Module

O exemplo seguinte define um procedimento com uma matriz de parâmetros e retorna os valores de todos os elementos passados à matriz de parâmetros.

Sub studentScores(ByVal name As String, ByVal ParamArray scores() As String)
    Debug.WriteLine("Scores for " & name & ":" & vbCrLf)
    ' Use UBound to determine largest subscript of the array.
    For i As Integer = 0 To UBound(scores, 1)
        Debug.WriteLine("Score " & i & ": " & scores(i))
    Next i
End Sub
Call studentScores("Anne", "10", "26", "32", "15", "22", "24", "16")
Call studentScores("Mary", "High", "Low", "Average", "High")
Dim JohnScores() As String = {"35", "Absent", "21", "30"}
Call studentScores("John", JohnScores)

Consulte também

Referência

Opcional (Visual Basic)

UBound

Conceitos

Procedimentos no Visual Basic

Parâmetros de procedimentos e argumentos (Visual Basic)

Passando argumentos por valor e por referência (Visual Basic)

Passando argumentos por posição e por nome (Visual Basic)

Parâmetros opcionais (Visual Basic)

Procedimento de sobrecarga (Visual Basic)

Outros recursos

Matrizes em Visual Basic