Condividi tramite


Parametri facoltativi (Visual Basic)

È 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.Qualora non venga fornito, la routine utilizzerà 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:

sub name(argument 1, , , argument 4)

Nell'esempio riportato di seguito vengono effettuate diverse chiamate alla funzione MsgBoxche include un parametro obbligatorio e due parametri facoltativi.

La prima chiamata a MsgBox fornisce tutti e tre gli argomenti in ordine che MsgBox li definisce.Nella seconda chiamata viene fornito solo l'argomento obbligatorio.Nella terza e quarta chiamata vengono forniti il primo e il terzo argomento.Nella terza chiamata gli argomenti vengono forniti in base alla posizione, nella quarta in base al nome.

MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")

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, sarà possibile utilizzare Nothing come valore predefinito, purché 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

Riferimenti

Optional (Visual Basic)

ParamArray (Visual Basic)

Concetti

Routine in Visual Basic

Parametri e argomenti delle routine (Visual Basic)

Passaggio di argomenti per valore e per riferimento (Visual Basic)

Passaggio di argomenti in base alla posizione e al nome (Visual Basic)

Matrici di parametri (Visual Basic)

Overload della routine (Visual Basic)