Condividi tramite


Procedura: overload di una routine che accetta parametri facoltativi

Aggiornamento: novembre 2007

Se una routine include uno o più parametri Optional (Visual Basic), non è possibile definire una versione di overload che corrisponda a uno dei relativi overload impliciti. Per ulteriori informazioni, vedere "Overload impliciti per i parametri facoltativi" in Considerazioni sull'overload di routine.

Un parametro facoltativo

Per eseguire l'overload di una routine che accetta un parametro facoltativo

  1. Scrivere un'istruzione di dichiarazione Sub o Function che includa il parametro facoltativo nell'elenco di parametri. Non utilizzare la parola chiave Optional in questa versione di overload.

  2. Far precedere la parola chiave Sub o Function dalla parola chiave Overloads.

  3. Scrivere il codice della routine da eseguire quando il codice chiamante fornisce l'argomento facoltativo.

  4. Far terminare la routine con l'istruzione End Sub o End Function, nel modo appropriato.

  5. Scrivere una seconda istruzione di dichiarazione identica alla prima, con l'eccezione che non includerà il parametro facoltativo nell'elenco di parametri.

  6. Scrivere il codice della routine da eseguire quando il codice chiamante non fornisce l'argomento facoltativo. Far terminare la routine con l'istruzione End Sub o End Function, nel modo appropriato.

    Nell'esempio seguente viene illustrata una routine definita con un parametro facoltativo, un set equivalente di due routine di overload e infine esempi sia della versione di overload valida che di quella non valida.

    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)
    

Più parametri facoltativi

Per una routine con più parametri facoltativi, sono generalmente necessarie più di due versioni di overload. Se, ad esempio, sono presenti due parametri facoltativi e il codice chiamante può fornirne oppure ometterne uno indipendentemente dall'altro, sono necessarie quattro versioni di overload, una per ogni possibile combinazione di argomenti forniti.

La complessità dell'overload cresce con l'aumentare del numero dei parametri facoltativi. 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, è possibile che la chiarezza della logica giustifichi l'attività aggiuntiva di definizione di tutte le versioni di overload.

Per eseguire l'overload di una routine che accetta più parametri facoltativi

  1. Stabilire quali combinazioni di argomenti facoltativi specificati sono accettabili per la logica della routine. È possibile che una combinazione non sia accettabile in caso di dipendenza reciproca di due parametri facoltativi. Se, ad esempio, un parametro accetta il nome di un coniuge e un altro ne accetta l'età, una combinazione di argomenti che specifica l'età ma omette il nome risulta inaccettabile.

  2. Per ogni combinazione accettabile di argomenti facoltativi forniti, scrivere un'istruzione di dichiarazione Sub o Function che definisca il corrispondente elenco di parametri. Non utilizzare la parola chiave Optional.

  3. In ogni dichiarazione far precedere la parola chiave Sub o Function dalla parola chiave Overloads.

  4. Dopo ogni dichiarazione, scrivere il codice della routine da eseguire quando il codice chiamante fornisce un elenco di argomenti corrispondente all'elenco di parametri di tale dichiarazione.

  5. Far terminare ogni routine con l'istruzione End Sub o End Function, nel modo appropriato.

Vedere anche

Attività

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

Concetti

Routine in Visual Basic

Parametri e argomenti delle routine

Parametri facoltativi

Matrici di parametri

Overload della routine

Risoluzione dell'overload