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ç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 no 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
Conceitos
Parâmetros e argumentos de procedimento (Visual Basic)
Passando argumentos por valor e por referência (Visual Basic)
Passando argumentos por posição e nome (Visual Basic)
Parâmetros opcionais (Visual Basic)
Sobrecarga de procedimento (Visual Basic)