Compartilhar via


Como: Definir um procedimento com um número indefinida de parâmetros

Você pode declarar um vetor de parâmetros como a última entrada numa lista de parâmetros do procedimento.Isso permite ao procedimento aceitar um conjunto de valores para aquele parâmetro, ao invés de apenas um.Você não tem que saber o número de valores no conjunto quando você define o procedimento.O conjunto é determinado individualmente por cada chamada ao procedimento, e cada chamada pode passar um número diferente de valores.

Para obter mais informações, consulte Matrizes de parâmetro.

Para definir um procedimento que pode aceitar um número indefinido de valores como último parâmetro

  1. Na declaração de procedimento, defina a lista de parâmetros do jeito comum.Todos os parâmetros exceto o último devem ser requeridos (não Opcional (Visual Basic)).

  2. Anteceda os último nome de parâmetro com as palavras chave ByVal ParamArray.Esse parâmetro é automaticamente opcional.Não inclua a palavra chave Optional.

  3. Siga o nome da matriz de parâmetros com um par vazio de parênteses.

  4. Siga os parêntese vazios com a cláusula usual As.

  5. Não siga a cláusula As com um valor padrão.O valor padrão da matriz de parâmetros é automaticamente uma matriz unidimencional vazia do tipo de dados que você especificou na cláusula As.

Trabalhando com os Valores da Matriz de Parâmetros

O código dentro do procedimento deve tratar a matriz de parâmetros como uma matriz unidimensional, cada elemento da qual é do mesmo tipo de dados do tipo de dados ParamArray.

Para acessar um dos valores da matriz de parâmetros

  1. No código do procedimento, determine o tamanho da matriz passada à matriz de parâmetros chamando a Função UBound (Visual Basic) no nome da matriz de parâmetros.

  2. Dentro de uma declaracão executável no código do procedimento, siga o nome do parâmetro com um subscript em parênteses.O subcript deve ser entre 0 e o limitante superior retornado por UBound.

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âmtros do modo de chamada, você deve testar seu tamanho e tomar passos apropriados se ele é muito grande para sua aplicação.

Exemplo

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

Os exemplos a seguir mostram chamadas típicas a studentScores.

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)

Compilando o código

Confira que ParamArray é o último parâmetro na lista de parâmetros, e que nenhum dos parâmetros anteriores é declarado como Optional.

Consulte também

Tarefas

Como: Chamar um procedimento que tem um número indefinida de parâmetros

Conceitos

Parâmetros do procedimento e argumentos

Argumento Passing By valor e por referência

Passagem de Argumentos por Posição e Nome

Parâmetros Opcionais

Sobrecarga de procedimento

Verificação de Tipo no Visual Basic

Referência

ByVal

ParamArray

Outros recursos

Matrizes no Visual Basic