Matrici di parametri (Visual Basic)

Non è solitamente possibile chiamare una routine con più argomenti di quelli specificati nella dichiarazione di routine.Quando è necessario disporre di un numero indefinito di argomenti, è possibile dichiarare una matrice di parametri che consente a una routine di accettare una matrice di valori per un parametro.Non è necessario conoscere il numero degli elementi nella matrice di parametri quando si definisce la routine.La dimensione della matrice è determinata singolarmente da ciascuna chiamata alla routine.

Dichiarazione di una ParamArray

Utilizzare la parola chiave ParamArray (Visual Basic) per indicare una matrice di parametri nell'elenco di parametri.È necessario attenersi alle regole che seguono:

  • Una routine può definire solo una matrice di parametri e deve rappresentare l'ultimo parametro nella definizione della routine.

  • È necessario che la matrice di parametri sia passata tramite valore.È buona norma di programmazione includere la parola chiave ByVal (Visual Basic) in modo esplicito nella definizione della routine.

  • La matrice di parametri è automaticamente facoltativa.Il suo valore predefinito è una matrice unidimensionale vuota del tipo di elementi della matrice di parametri.

  • È necessario che tutti i parametri che precedono la matrice di parametri siano obbligatorie che la matrice di parametri sia l'unico parametro facoltativo.

Chiamata di una ParamArray

Quando si chiama una routine che definisce una matrice di parametri, è possibile fornire l'argomento attraverso uno dei metodi illustrati di seguito.

  • Nothing, ovvero è possibile omettere l'argomento ParamArray (Visual Basic).In questo caso, alla routine viene passata una matrice vuota.È anche possibile passare la parola chiave Nothing (Visual Basic), con lo stesso risultato.

  • Un elenco di un numero arbitrario di argomenti, separati da virgole.È necessario che il tipo di dati di ciascun argomento sia convertibile in modo implicito nel tipo di elemento ParamArray.

  • Una matrice con lo stesso tipo di elemento del tipo di elemento della matrice di parametri.

In tutti i casi il codice all'interno della routine considera la matrice di parametri come una matrice unidimensionale in cui ogni elemento è dello stesso tipo di dati del tipo di dati ParamArray.

Nota sulla sicurezzaNota 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, è necessario verificare le dimensioni della matrice passate dal codice chiamante.Qualora tali dimensioni risultino eccessive per l'applicazione che si sta sviluppando, intraprendere le azioni appropriate.Per ulteriori informazioni, vedere Matrici in Visual Basic.

Esempio

In l ' esempio seguente viene definita e chiamata la funzione calcSum.Il modificatore di ParamArray per il parametro args consente alla funzione di accettare un numero variabile di argomenti.

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

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
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)

Vedere anche

Riferimenti

Optional (Visual Basic)

UBound

Concetti

Routine in Visual Basic

Parametri e argomenti delle routine (Visual Basic)

Passaggio di argomenti per valore e per riferimento (Visual Basic)

Passaggio di argomenti in base alla posizione e al nome (Visual Basic)

Parametri facoltativi (Visual Basic)

Overload della routine (Visual Basic)

Altre risorse

Matrici in Visual Basic