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.
Quando si chiama una Sub
routine o Function
, è possibile passare argomenti per posizione , nell'ordine in cui vengono visualizzati nella definizione della routine , oppure è possibile passarli per nome, senza considerare la posizione.
Quando si passa un argomento per nome, si specifica il nome dichiarato dell'argomento seguito da due punti e un segno di uguale (:=
), seguito dal valore dell'argomento. È possibile fornire argomenti denominati in qualsiasi ordine.
Ad esempio, la procedura seguente Sub
accetta tre argomenti:
Public Class StudentInfo
Shared Sub Display(name As String,
Optional age As Short = 0,
Optional birth As Date = #1/1/2000#)
Console.WriteLine($"Name = {name}; age = {age}; birth date = {birth:d}")
End Sub
End Class
Quando si chiama questa procedura, è possibile specificare gli argomenti in base alla posizione, in base al nome o usando una combinazione di entrambi.
Passaggio di argomenti per posizione
È possibile chiamare il Display
metodo con i relativi argomenti passati per posizione e delimitati da virgole, come illustrato nell'esempio seguente:
StudentInfo.Display("Mary", 19, #9/21/1998#)
Se si omette un argomento facoltativo in un elenco di argomenti posizionale, è necessario conservarne la posizione con una virgola. Nell'esempio seguente, il metodo Display
viene chiamato senza l'argomento age
.
StudentInfo.Display("Mary",, #9/21/1998#)
Passaggio di argomenti per nome
In alternativa, è possibile chiamare Display
con gli argomenti passati per nome, delimitati anche da virgole, come illustrato nell'esempio seguente:
StudentInfo.Display(age:=19, birth:=#9/21/1998#, name:="Mary")
Il passaggio di argomenti per nome in questo modo è particolarmente utile quando si chiama una procedura che ha più di un argomento facoltativo. Se si specificano argomenti per nome, non è necessario usare virgole consecutive per indicare gli argomenti posizionali mancanti. Il passaggio di argomenti in base al nome semplifica anche la verifica degli argomenti che si stanno passando e di quali argomenti si sta omettendo.
Combinazione di argomenti per posizione e per nome
È possibile specificare argomenti sia per posizione che per nome in una singola chiamata di routine, come illustrato nell'esempio seguente:
StudentInfo.Display("Mary", birth:=#9/21/1998#)
Nell'esempio precedente non è necessaria alcuna virgola aggiuntiva per contenere il posto dell'argomento omesso age
, poiché birth
viene passato per nome.
Nelle versioni di Visual Basic precedenti alla 15.5, quando si specificano argomenti in base a una combinazione di posizione e nome, gli argomenti posizionali devono venire tutti per primi. Dopo aver specificato un argomento in base al nome, tutti gli argomenti rimanenti devono essere passati per nome. Ad esempio, la chiamata seguente al metodo Display
visualizza l'errore del compilatore BC30241: Argomento denominato previsto.
StudentInfo.Display("Mary", age:=19, #9/21/1998#)
A partire da Visual Basic 15.5, gli argomenti posizionali possono seguire argomenti denominati se gli argomenti posizionali finali si trovano nella posizione corretta. Se compilato in Visual Basic 15.5, la chiamata precedente al metodo viene compilata correttamente e non genera più l'errore del Display
compilatore BC30241.
Questa possibilità di combinare e associare argomenti denominati e posizionali in qualsiasi ordine è particolarmente utile quando si vuole usare un argomento denominato per rendere il codice più leggibile. Ad esempio, il costruttore di classe seguente Person
richiede due argomenti di tipo Person
, entrambi i quali possono essere Nothing
.
Public Sub New(name As String, father As Person, mother As Person, dateOfBirth As Date)
L'uso di argomenti denominati e posizionali misti consente di rendere chiara la finalità del codice quando il valore degli argomenti father
e mother
è Nothing
:
Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)
Per seguire gli argomenti posizionali con argomenti denominati, è necessario aggiungere l'elemento seguente al file di progetto visual Basic (*.vbproj):
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Per altre informazioni, vedere Impostazione della versione del linguaggio Visual Basic.
Restrizioni relative all'inserimento di argomenti in base al nome
Non puoi passare argomenti per nome per evitare di inserire argomenti obbligatori. È possibile omettere solo gli argomenti facoltativi.
Non è possibile passare una matrice di parametri in base al nome. Ciò avviene perché quando si chiama la routine, si specifica un numero indefinito di argomenti delimitati da virgole per la matrice di parametri e il compilatore non può associare più di un argomento a un singolo nome.