Procedura: eseguire l'overload di una routine che accetta parametri facoltativi (Visual Basic)
Se una routine ha uno o più parametri Optional, non è possibile definire una versione di overload corrispondente a uno dei relativi overload impliciti. Per altre informazioni, vedere "Overload impliciti per parametri facoltativi" in Considerazioni sull'overload delle routine.
Un parametro facoltativo
Per eseguire l'overload di una routine che accetta un parametro facoltativo
Scrivere un'istruzione di dichiarazione di
Sub
oFunction
che include il parametro facoltativo nell'elenco di parametri. Non usare la parola chiaveOptional
in questa versione di overload.Precedere la parola chiave
Sub
oFunction
con la parola chiave Overloads.Scrivere il codice della routine che deve essere eseguito quando il codice chiamante fornisce l'argomento facoltativo.
Terminare la routine con l'istruzione
End Sub
oEnd Function
in base alle esigenze.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 routine che deve essere eseguito quando il codice chiamante non fornisce l'argomento facoltativo. Terminare la routine con l'istruzione
End Sub
oEnd Function
in base alle esigenze.Nell'esempio seguente viene illustrata una routine definita con un parametro facoltativo, un set equivalente di due routine con 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 routine con più parametri facoltativi sono in genere necessarie più di due versioni di overload. Se ad esempio sono presenti due parametri facoltativi e il codice chiamante può fornire oppure 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à dell'overload. A meno che alcune combinazioni di argomenti forniti non siano accettabili, per N parametri facoltativi sono necessarie 2 ^ N versioni di overload. A seconda della natura della routine, si potrebbe notare che la chiarezza della logica giustifica l'impegno aggiuntivo di definire tutte le versioni di overload.
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. È possibile che si ottenga una combinazione inaccettabile se un parametro facoltativo dipende da un altro. Se ad esempio 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 omettono il nome non è accettabile.
Per ogni combinazione accettabile di argomenti facoltativi forniti, scrivere un'istruzione di dichiarazione di
Sub
oFunction
che definisce l'elenco di parametri corrispondente. Non usare la parola chiaveOptional
.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 un elenco di argomenti corrispondente all'elenco di parametri di tale dichiarazione.
Terminare ogni routine con l'istruzione
End Sub
oEnd Function
in base alle esigenze.
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 un numero indefinito di parametri
- Overload Resolution