Share via


Passaggio di argomenti tramite posizione e tramite nome

Aggiornamento: novembre 2007

Quando si chiama una routine Sub o Function, è possibile passare gli argomenti per posizione, vale a dire nell'ordine in cui vengono visualizzati nella definizione della routine, oppure per nome, senza tener conto della posizione.

Quando si passa un argomento per nome, si specifica il nome dichiarato dell'argomento seguito da un segno di due punti e da un segno di uguale (:=), seguiti dal valore dell'argomento. È possibile fornire gli argomenti nominati in qualsiasi ordine.

Nella seguente routine Sub ad esempio vengono utilizzati tre argomenti:

Sub studentInfo(ByVal name As String, _
       Optional ByVal age As Short = 0, _
       Optional ByVal birth As Date = #1/1/2000#)

  Debug.WriteLine("Name = " & name & _
                "; age = " & CStr(age) & _
                "; birth date = " & CStr(birth))
End Sub

Quando si chiama questa routine, è possibile fornire gli argomenti tramite posizione, tramite nome o utilizzando una combinazione dei due criteri.

Passaggio di argomenti tramite posizione

È possibile chiamare la routine studentInfo con i relativi argomenti passati per posizione e delimitati da virgole, come mostrato nell'esempio seguente:

Call studentInfo("Mary", 19, #9/21/1981#)

Se si omette un argomento facoltativo in un elenco di argomenti di posizione, indicarne la posizione con una virgola. Nell'esempio riportato di seguito viene chiamata la routine studentInfo senza l'argomento age .

Call studentInfo("Mary", , #9/21/1981#)

Passaggio di argomenti tramite nome

In alternativa, è possibile chiamare studentInfo con gli argomenti passati per nome e delimitati da virgole, come mostrato nell'esempio seguente:

Call studentInfo(age:=19, birth:=#9/21/1981#, name:="Mary")

Combinazione di argomenti tramite posizione e tramite nome

È possibile fornire argomenti tramite posizione e tramite nome in un'unica chiamata di routine, come mostrato nell'esempio che segue:

Call studentInfo("Mary", birth:=#9/21/1981#)

Nell'esempio precedente non è necessaria alcuna virgola aggiuntiva per indicare la posizione dell'argomento age omesso, in quanto birth viene passato per nome.

Quando si specificano argomenti sia per posizione che per nome, è necessario che tutti gli argomenti di posizione siano indicati per primi. Una volta fornito un argomento tramite nome, è necessario passare tramite nome tutti quelli rimanenti.

Passaggio di argomenti facoltativi tramite nome

Il passaggio di argomenti tramite nome è particolarmente utile quando si chiama una routine che contiene più argomenti facoltativi. Se si forniscono gli argomenti tramite nome, non è necessario utilizzare virgole per indicare gli argomenti di posizione mancanti. Il passaggio di argomenti tramite nome, inoltre, rende più facile registrare gli argomenti in fase di passaggio e quelli omessi.

Restrizioni al passaggio di argomenti tramite nome

Non è possibile passare argomenti tramite nome per evitare di inserire argomenti obbligatori. È possibile omettere solo gli argomenti facoltativi.

Non è possibile passare una matrice di parametri tramite nome, perché, quando si chiama una routine, si fornisce un numero non definito di argomenti separati da virgole per la matrice di parametro e il compilatore non può associare più argomenti a un singolo nome.

Vedere anche

Attività

Procedura: passare argomenti a una routine

Procedura: passare argomenti a una routine per nome

Concetti

Routine in Visual Basic

Parametri e argomenti delle routine

Passaggio di argomenti per valore e per riferimento

Parametri facoltativi

Matrici di parametri

Riferimenti

Optional (Visual Basic)

ParamArray