Condividi tramite


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 di overload che accetta una matrice unidimensionale per la matrice di parametri. Per ulteriori informazioni, vedere "Sovrapposizioni implicite per un parametro ParamArray" nelle Considerazioni sulle procedure di sovrapposizione.

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

  1. Verificare che la procedura e la logica del codice chiamante tragga vantaggio dalle versioni sovraccaricate più che da un ParamArray parametro. Vedere "Overload e ParamArrays" in Considerazioni sulle procedure di overload.

  2. Determinare i numeri di valori specificati che la procedura deve accettare nella parte variabile dell'elenco di parametri. Ciò può includere il caso di nessun valore e può includere il caso di una singola matrice unidimensionale.

  3. Per ogni numero accettabile di valori forniti, scrivere un'istruzione Sub o Function dichiarazione che definisce l'elenco di parametri corrispondente. Non usare né la parola chiave Optional né la parola chiave ParamArray in questa versione sovraccaricata.

  4. In ogni dichiarazione, precedere la parola chiave Sub o Function con la parola chiave Overloads.

  5. 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.

  6. Terminare ogni procedura con l'istruzione End Sub o End Function a seconda dei casi.

Esempio

Nell'esempio seguente viene illustrata una routine definita con un parametro ParamArray e quindi un set 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. Tuttavia, è possibile utilizzare le definizioni degli altri sovraccarichi impliciti. Le dichiarazioni seguenti illustrano questa situazione.

' 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 ParamArray parametro o, in caso affermativo, quanti. Visual Basic passa il comando alla versione che corrisponde all'elenco degli argomenti di chiamata.

Compilare il codice

Poiché una routine con un ParamArray parametro equivale a un set 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 sul sovraccarico delle procedure.

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 a cui è stato passato il codice chiamante ed eseguire le operazioni appropriate se è troppo grande per l'applicazione.

Vedere anche