Procedura: eseguire l'overload di una routine che accetta un numero indefinito di parametri (Visual Basic)
Se una routine ha un parametro ParamArray, non è possibile definire una versione con overload che accetta una matrice unidimensionale per la matrice di parametri. Per altre informazioni, vedere "Overload impliciti per un parametro ParamArray" in Considerazioni sull'overload delle routine.
Per eseguire l'overload di una routine che accetta un numero variabile di parametri
Verificare che l'uso delle versioni con overload risulti più vantaggioso rispetto all'uso di un parametro
ParamArray
per la routine e la logica del codice chiamante. Vedere "Overload e ParamArrays" in Considerazioni sull'overload delle routine.Determinare quali numeri di valori forniti devono essere accettati dalla routine nella parte relativa alla variabile dell'elenco di parametri. Le opzioni consentite includono nessun valore e anche una singola matrice unidimensionale.
Per ogni numero accettabile di valori forniti, scrivere un'istruzione di dichiarazione
Sub
oFunction
che definisce l'elenco di parametri corrispondente. Non usare la parola chiaveOptional
oParamArray
in questa versione con overload.In ogni dichiarazione precedere la parola chiave
Sub
oFunction
con la parola chiave Overloads.Dopo ogni dichiarazione, scrivere il codice della routine che deve essere eseguito quando il codice chiamante fornisce valori corrispondenti all'elenco di parametri di tale dichiarazione.
Terminare ogni routine con l'istruzione
End Sub
oEnd Function
in base alle esigenze.
Esempio
Nell'esempio seguente viene illustrata una routine definita con un parametro ParamArray e quindi un set equivalente di routine con 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. È tuttavia possibile usare le firme degli altri overload impliciti. Le dichiarazioni seguenti illustrano questo concetto.
' 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 con overload non deve verificare se il codice chiamante ha fornito uno o più valori per il parametro ParamArray
o, in tale caso, quanti valori. Visual Basic passa il controllo alla versione corrispondente all'elenco di argomenti chiamante.
Compilare il codice
Poiché una routine con un parametro ParamArray
equivale a un set di versioni con 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 altre informazioni, vedere Considerazioni sull'overload delle routine.
Sicurezza di .NET Framework
Ogni volta che si gestisce una matrice che può essere a tempo indefinito di grandi dimensioni, esiste il rischio di sovraccaricare alcune capacità interne dell'applicazione. Se si accetta una matrice di parametri, è necessario verificare la lunghezza della matrice passata dal codice chiamante ed eseguire le operazioni appropriate se è troppo grande per l'applicazione.
Vedi anche
- Procedure
- Parametri e argomenti delle routine
- Parametri facoltativi
- Matrici di parametri
- Overload delle routine
- Risoluzione dei problemi relativi alle routine
- Procedura: Definire più versioni di una routine
- Procedura: Chiamare una routine di overload
- Procedura: Eseguire l'overload di una routine che accetta parametri facoltativi
- Overload Resolution