Condividi tramite


Procedura: definire una routine con un numero indefinito di parametri

Aggiornamento: novembre 2007

È possibile dichiarare una matrice di parametri come ultima voce di un elenco di parametri di una routine. Questo consente alla routine di accettare per tale parametro un insieme di valori anziché un unico valore. Quando si definisce la routine, non è necessario conoscere il numero di valori dell'insieme. L'insieme viene determinato singolarmente da ciascuna chiamata alla routine. Ogni chiamata può passare un diverso numero di valori.

Per ulteriori informazioni, vedere Matrici di parametri .

Per definire una routine in grado di accettare un numero indefinito di valori per l'ultimo parametro

  1. Nella dichiarazione della routine definire l'elenco dei parametri secondo la normale procedura. Tutti i parametri, ad eccezione dell'ultimo, devono essere obbligatori, ossia non Optional (Visual Basic).

  2. Prima dell'ultimo parametro inserire le parole chiave ByVal ParamArray. Questo parametro è automaticamente facoltativo. Non includere la parola chiave Optional.

  3. Dopo il nome della matrice di parametri inserire una coppia di parentesi vuote.

  4. Dopo le parentesi vuote inserire la consueta clausola As.

  5. Non inserire un valore predefinito dopo la clausola As. Il valore predefinito della matrice di parametri è automaticamente una matrice unidimensionale vuota del tipo di dati specificato nella clausola As.

Utilizzo dei valori della matrice di parametri

È necessario che il codice all'interno della routine consideri la matrice di parametri come una matrice unidimensionale, ogni elemento della quale è dello stesso tipo di dati di ParamArray.

Per accedere a un valore di una matrice di parametri

  1. Nel codice della routine determinare la lunghezza della matrice passata alla matrice di parametri mediante una chiamata alla Funzione UBound (Visual Basic) sul nome della matrice di parametri.

  2. In un'istruzione eseguibile nel codice della routine inserire un indice racchiuso tra parentesi dopo il nome della matrice di parametri. L'indice deve essere compreso tra 0 e il limite superiore restituito da UBound.

Nota sulla sicurezza:

Ogni volta che viene utilizzata una matrice che può essere di dimensioni indefinite, esiste il rischio di sovraccarico della capacità interna dell'applicazione. Se si accetta una matrice di parametri dal codice chiamante, è necessario verificarne la lunghezza ed effettuare le operazioni appropriate nel caso in cui le dimensioni siano eccessive per l'applicazione.

Esempio

Nell'esempio riportato di seguito viene definita una routine con una matrice di parametri e vengono generati i valori di tutti gli elementi della matrice passati alla matrice di parametri.

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

Negli esempi riportati di seguito vengono illustrate chiamate tipiche 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)

Compilazione del codice

Assicurarsi che ParamArray sia l'ultimo parametro dell'elenco e che nessuno dei parametri precedenti sia dichiarato come Optional.

Vedere anche

Attività

Procedura: chiamare una routine che accetta un numero indefinito di parametri

Concetti

Parametri e argomenti delle routine

Passaggio di argomenti per valore e per riferimento

Passaggio di argomenti tramite posizione e tramite nome

Parametri facoltativi

Overload della routine

Controllo dei tipi in Visual Basic

Riferimenti

ByVal

ParamArray

Altre risorse

Matrici in Visual Basic