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.
È possibile specificare che un parametro di routine è facoltativo e non è necessario specificare alcun argomento quando viene chiamata la routine.
I parametri facoltativi sono indicati dalla Optional parola chiave nella definizione della routine. Si applicano le seguenti regole:
Ogni parametro facoltativo nella definizione della routine deve specificare un valore predefinito.
Il valore predefinito per un parametro facoltativo deve essere un'espressione costante.
Ogni parametro che segue un parametro facoltativo nella definizione della procedura deve essere facoltativo.
La sintassi seguente illustra una dichiarazione di routine con un parametro facoltativo:
Sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)
Chiamata di routine con parametri facoltativi
Quando si chiama una routine con un parametro facoltativo, è possibile scegliere se specificare l'argomento . Se non lo fai, la procedura utilizza il valore predefinito dichiarato per quel parametro.
Quando si omette uno o più argomenti facoltativi nell'elenco di argomenti, si usano virgole successive per contrassegnare le posizioni. La chiamata di esempio seguente fornisce il primo e il quarto argomento ma non il secondo o il terzo:
Sub name(argument 1, , , argument 4)
Nell'esempio seguente vengono effettuate diverse chiamate alla MsgBox funzione .
MsgBox ha un parametro obbligatorio e due parametri facoltativi.
La prima chiamata a MsgBox fornisce tutti e tre gli argomenti nell'ordine in cui MsgBox vengono definiti. La seconda chiamata fornisce solo l'argomento obbligatorio. La terza e la quarta chiamata forniscono il primo e il terzo argomento. La terza chiamata esegue questa operazione in base alla posizione e la quarta chiamata lo esegue 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")
Determinare se è presente un argomento facoltativo
Una routine non è in grado di rilevare in fase di esecuzione se un determinato argomento è stato omesso o se il codice chiamante ha fornito in modo esplicito il valore predefinito. Se è necessario fare questa distinzione, è possibile impostare un valore improbabile come predefinito. La procedura seguente definisce il parametro officefacoltativo e verifica il relativo valore predefinito, QJZ, per verificare 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, ad esempio , Stringè possibile usare Nothing come valore predefinito, purché questo non sia un valore previsto per l'argomento.
Parametri facoltativi e sovraccarico
Un altro modo per definire una routine con parametri facoltativi consiste nell'usare l'overload. Se si dispone di un parametro facoltativo, è possibile definire due versioni di overload della procedura, una che accetta il parametro e una senza di essa. Questo approccio diventa più complicato man mano che aumenta il numero di parametri facoltativi. Tuttavia, il suo vantaggio è che è possibile essere assolutamente sicuri se il programma chiamante ha fornito ogni argomento facoltativo.