Condividi tramite


Procedura: eseguire l'overload di una routine che accetta un numero indefinito di parametri

Aggiornamento: novembre 2007

Se una routine include un parametro ParamArray, non è possibile definire una versione di overload che accetta una matrice unidimensionale per la matrice di parametri. Per ulteriori informazioni, vedere "Overload impliciti per un parametro ParamArray" in Considerazioni sull'overload di routine.

Per eseguire l'overload di una routine che accetta un numero variabile di parametri

  1. Assicurarsi che per la logica della routine e del codice chiamante i vantaggi derivanti dall'utilizzo di versioni di overload siano maggiori rispetto a quelli derivanti dall'uso di un parametro ParamArray. Per informazioni, vedere "Overload e ParamArray" in Considerazioni sull'overload di routine.

  2. Determinare il numero di valori specificati che la routine deve accettare nella parte variabile dell'elenco dei parametri. È possibile che non sia disponibile alcun valore o che sia presente una sola matrice unidimensionale.

  3. Per ogni numero accettabile di valori forniti, scrivere un'istruzione per la dichiarazione Sub o Function che definisca l'elenco di parametri corrispondente. Non utilizzare la parola chiave Optional o ParamArray in questa versione di overload.

  4. In ogni dichiarazione inserire la parola chiave Overloads prima della parola chiave Sub o Function .

  5. Dopo ogni dichiarazione scrivere il codice della routine da eseguire quando il codice chiamante fornisce valori corrispondenti all'elenco dei parametri della dichiarazione.

  6. Terminare ciascuna routine con l'istruzione End Sub o End Function nel modo appropriato.

Esempio

Nell'esempio riportato di seguito vengono illustrati una routine definita con un parametro ParamArray e quindi un insieme equivalente di routine di overload.

Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads.
' Overloads Sub p(ByVal d As Date)
' Overloads Sub p(ByVal d As Date, ByVal c() As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char)
' And so on, with an additional Char argument in each successive overload.

Non è possibile eseguire l'overload di una routine di questo tipo con un elenco di parametri che accetta una matrice unidimensionale per la matrice di parametri. È invece possibile utilizzare le firme di altri overload impliciti. Questa situazione viene illustrata nelle dichiarazioni seguenti.

' The following overload is not valid because it takes an array for the parameter array.
' Overloads Sub p(ByVal x As Date, ByVal y() As Char)
' The following overload takes a single value for the parameter array and is valid.
Overloads Sub p(ByVal z As Date, ByVal w As Char)

Il codice nelle versioni di overload non deve verificare se il codice chiamante ha fornito uno o più valori per il parametro ParamArray e, in caso affermativo, il numero di valori. In Visual Basic il controllo viene passato alla versione che corrisponde all'elenco di argomenti che effettuano la chiamata.

Compilazione del codice

Poiché una routine con un parametro ParamArray equivale a un insieme di versioni di overload, non è possibile eseguire l'overload di una routine di questo tipo con un elenco di parametri corrispondente a uno di questi overload impliciti. Per ulteriori informazioni, vedere Considerazioni sull'overload di routine.

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 la lunghezza della matrice passata dal codice chiamante ed effettuare le operazioni appropriate nel caso in cui fosse troppo grande per l'applicazione.

Vedere anche

Attività

Risoluzione dei problemi relativi alle routine

Procedura: definire più versioni di una routine

Procedura: chiamare una routine di overload

Procedura: overload di una routine che accetta parametri facoltativi

Concetti

Routine in Visual Basic

Parametri e argomenti delle routine

Parametri facoltativi

Matrici di parametri

Overload della routine

Risoluzione dell'overload