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
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.
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.
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.
In ogni dichiarazione inserire la parola chiave Overloads prima della parola chiave Sub o Function .
Dopo ogni dichiarazione scrivere il codice della routine da eseguire quando il codice chiamante fornisce valori corrispondenti all'elenco dei parametri della dichiarazione.
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