Condividi tramite


Parametri facoltativi

Aggiornamento: novembre 2007

È possibile specificare che un parametro di routine è facoltativo e non è necessario fornire alcun argomento quando la routine viene chiamata. I parametri facoltativi sono indicati dalla parola chiave Optional nella definizione della routine. È necessario attenersi alle regole che seguono:

  • È necessario che ciascun parametro facoltativo nella definizione della routine specifichi un valore predefinito.

  • È necessario che tale valore predefinito per un parametro facoltativo sia un'espressione costante.

  • Ciascun parametro che segue un parametro facoltativo nella definizione della routine deve essere anch'esso facoltativo.

Nella sintassi seguente viene illustrata una dichiarazione di routine con un parametro facoltativo:

Sub sub name(ByVal parameter 1 As data type 1, Optional ByVal parameter 2 As data type 2 = default value)

Chiamata di routine con parametri facoltativi

Quando si chiama una routine con un parametro facoltativo, è possibile scegliere se fornire l'argomento o meno. Se non lo si fornisce, la routine utilizza il valore predefinito dichiarato per quel parametro.

Quando si omettono uno o più argomenti facoltativi nell'elenco degli argomenti, utilizzare virgole in sequenza per contrassegnarne la posizione. La chiamata di esempio che segue fornisce il primo e il quarto argomento, ma non il secondo o il terzo:

Call sub name(argument 1, , , argument 4)

Determinazione dell'eventuale presenza di un argomento facoltativo

Una routine non può rilevare, in fase di esecuzione, se un determinato argomento è stato omesso o se il codice di chiamata ha fornito in modo esplicito il valore predefinito. Se è necessario fare questa distinzione, è possibile impostare come predefinito un valore improbabile. La routine riportata di seguito definisce il parametro facoltativo office e ne verifica il valore predefinito, QJZ, per controllare se è stato omesso nella chiamata:

Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
    If office = "QJZ" Then
        Debug.WriteLine("office not supplied -- using Headquarters")
        office = "Headquarters"
    End If
    ' Insert code to notify headquarters or specified office.
End Sub

Se il parametro facoltativo è un tipo di riferimento come String, è possibile utilizzare Nothing come valore predefinito, a meno che esso non sia un valore previsto per l'argomento.

Parametri facoltativi e overload

Un altro modo per definire una routine con parametri facoltativi consiste nell'utilizzare l'overload. Nel caso di un parametro facoltativo, è possibile definire due versioni di overload della routine, una con il parametro e l'altra senza. Questo metodo diventa più complesso con l'aumentare del numero dei parametri facoltativi, tuttavia ha il vantaggio di assicurare che il programma di chiamata fornisca tutti gli argomenti facoltativi.

Vedere anche

Attività

Procedura: definire parametri facoltativi per una routine

Procedura: chiamare una routine che accetta parametri facoltativi

Procedura: determinare se un parametro facoltativo è stato fornito

Concetti

Routine in Visual Basic

Parametri e argomenti delle routine

Passaggio di argomenti per valore e per riferimento

Passaggio di argomenti tramite posizione e tramite nome

Matrici di parametri

Overload della routine

Riferimenti

Optional (Visual Basic)

ParamArray