Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Se una routine dispone di uno o più parametri Facoltativi , non è possibile definire una versione di overload corrispondente a uno dei relativi overload impliciti. Per ulteriori informazioni, consultare "Overload impliciti per parametri facoltativi" in Considerazioni sulle procedure di overload.
Un parametro facoltativo
Per eseguire l'overload di una routine che accetta un parametro facoltativo
Scrivere un'istruzione
SuboFunctionche includa il parametro facoltativo nell'elenco di parametri. Non usare la parola chiaveOptionalin questa versione sovraccarica.Precedere la parola chiave
SuboFunctioncon la parola chiave Overloads.Scrivere il codice della procedura che deve essere eseguita quando il codice chiamante fornisce l'argomento facoltativo.
Terminare la procedura con l'istruzione
End SuboEnd Functiona seconda dei casi.Scrivere una seconda istruzione di dichiarazione identica alla prima dichiarazione, ad eccezione del fatto che non include il parametro facoltativo nell'elenco di parametri.
Scrivere il codice della procedura che deve eseguire quando il codice chiamante non fornisce l'argomento facoltativo. Terminare la procedura con l'istruzione
End SuboEnd Functiona seconda dei casi.Nell'esempio seguente viene illustrata una routine definita con un parametro facoltativo, un set equivalente di due procedure di overload e infine esempi di versioni di overload non valide e valide.
Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)' The preceding definition is equivalent to the following two overloads. ' Overloads Sub q(ByVal b As Byte) ' Overloads Sub q(ByVal b As Byte, ByVal j As Long)' Therefore, the following overload is not valid because the signature is already in use. ' Overloads Sub q(ByVal c As Byte, ByVal k As Long) ' The following overload uses a different signature and is valid. Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)
Parametri facoltativi multipli
Per una procedura con più parametri facoltativi, di solito sono necessarie più di due versioni sovraccaricate. Ad esempio, se sono presenti due parametri facoltativi e il codice chiamante può fornire o omettere ognuno indipendentemente dall'altro, sono necessarie quattro versioni di overload, una per ogni possibile combinazione di argomenti forniti.
Con l'aumentare del numero di parametri facoltativi, aumenta la complessità del sovraccarico. A meno che alcune combinazioni di argomenti forniti non siano accettabili, per N parametri facoltativi sono necessarie 2 ^ N versioni sovraccaricate. A seconda della natura della procedura, potresti notare che la chiarezza della logica giustifica l'impegno aggiuntivo di definire tutte le versioni sovraccaricate.
Per eseguire l'overload di una routine che accetta più di un parametro facoltativo
Determinare quali combinazioni di argomenti facoltativi forniti sono accettabili per la logica della routine. Una combinazione inaccettabile può verificarsi se un parametro facoltativo dipende da un altro. Ad esempio, se un parametro accetta il nome di una persona e un altro accetta l'età della persona, una combinazione di argomenti che forniscono l'età, ma omettendo il nome non è accettabile.
Per ogni combinazione accettabile di argomenti facoltativi forniti, scrivere una dichiarazione
SuboFunctionche definisca l'elenco di parametri corrispondente. Non usare laOptionalparola chiave .In ogni dichiarazione, precedere la parola chiave
SuboFunctioncon la parola chiave Overloads.Dopo ogni dichiarazione, scrivere il codice della routine che deve essere eseguito quando il codice chiamante fornisce un elenco di argomenti corrispondente all'elenco di parametri di tale dichiarazione.
Terminare ogni procedura con l'istruzione
End SuboEnd Functiona seconda dei casi.
Vedere anche
- Procedure
- Parametri e argomenti della procedura
- parametri facoltativi
- matrici di parametri
- Sovraccarico di Procedure
- procedure di risoluzione dei problemi
- Procedura: Definire più versioni di una routine
- Come chiamare una procedura sovraccaricata
- Procedura: Eseguire l'overload di una routine che accetta un numero indefinito di parametri
- Risoluzione del sovraccarico