Delen via


Argumenten doorgeven op positie en op naam (Visual Basic)

Wanneer u een Sub of Function procedure aanroept, kunt u argumenten doorgeven op positie, in de volgorde waarin ze worden weergegeven in de proceduredefinitie, of u kunt ze doorgeven op naam, zonder rekening te houden met de positie.

Wanneer u een argument op naam doorgeeft, geeft u de gedeclareerde naam van het argument op, gevolgd door een dubbele punt en een gelijkteken (:=), gevolgd door de argumentwaarde. U kunt benoemde argumenten opgeven in elke volgorde.

De volgende Sub procedure heeft bijvoorbeeld drie argumenten:

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

Wanneer u deze procedure aanroept, kunt u de argumenten opgeven op positie, op naam of door een combinatie van beide te gebruiken.

Argumenten doorgeven op basis van positie

U kunt de Display methode aanroepen met de argumenten die worden doorgegeven door positie en gescheiden door komma's, zoals wordt weergegeven in het volgende voorbeeld:

StudentInfo.Display("Mary", 19, #9/21/1998#)

Als u een optioneel argument weglaat in een lijst met positionele argumenten, moet u de plaats ervan met een komma behouden. In het volgende voorbeeld wordt de Display methode aangeroepen zonder het age argument:

StudentInfo.Display("Mary",, #9/21/1998#)

Argumenten doorgeven via naamgeving

U kunt ook de functie Display aanroepen met de op naam doorgegeven argumenten, die ook gescheiden zijn door komma's, zoals wordt weergegeven in het volgende voorbeeld:

StudentInfo.Display(age:=19, birth:=#9/21/1998#, name:="Mary")

Het doorgeven van argumenten op deze manier is vooral handig wanneer u een procedure aanroept die meer dan één optioneel argument heeft. Als u argumenten op naam opgeeft, hoeft u geen opeenvolgende komma's te gebruiken om ontbrekende positionele argumenten aan te geven. Het doorgeven van argumenten op naam maakt het ook gemakkelijker om bij te houden welke argumenten u doorgeeft en welke u weglaat.

Argumenten combineren op positie en op naam

U kunt argumenten opgeven op positie en op naam in één procedureaanroep, zoals wordt weergegeven in het volgende voorbeeld:

StudentInfo.Display("Mary", birth:=#9/21/1998#)

In het voorgaande voorbeeld is er geen extra komma nodig om de plaats van het weggelaten argument age aan te geven, omdat birth wordt doorgegeven op naam.

In versies van Visual Basic vóór 15.5, wanneer u argumenten opgeeft met een combinatie van positie en naam, moeten de positionele argumenten allemaal als eerste komen. Zodra u een argument op naam opgeeft, moeten alle resterende argumenten worden doorgegeven op naam. Met de volgende aanroep van de Display methode wordt bijvoorbeeld de compilerfout weergegeven BC30241: Benoemd argument verwacht.

StudentInfo.Display("Mary", age:=19, #9/21/1998#)

Vanaf Visual Basic 15.5 kunnen positionele argumenten benoemde argumenten volgen als de eindpositieargumenten zich op de juiste positie bevinden. Als deze is gecompileerd onder Visual Basic 15.5, wordt de vorige aanroep naar de Display-methode succesvol gecompileerd en genereert deze geen compilerfout BC30241 meer.

Deze mogelijkheid om benoemde en positionele argumenten in elke volgorde te combineren en te vergelijken, is met name handig als u een benoemd argument wilt gebruiken om uw code beter leesbaar te maken. Voor de volgende Person klasseconstructor zijn bijvoorbeeld twee argumenten van het type Personvereist, die beide kunnen zijn Nothing.

Public Sub New(name As String, father As Person, mother As Person, dateOfBirth As Date)

Het gebruik van gemengde benoemde en positionele argumenten helpt om de intentie van de code duidelijk te maken wanneer de waarde van de father en mother argumenten is Nothing:

Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)

Als u positionele argumenten met benoemde argumenten wilt volgen, moet u het volgende element toevoegen aan het Visual Basic-project (*.vbproj)-bestand:

<PropertyGroup>
  <LangVersion>15.5</LangVersion>
</PropertyGroup>

Zie de versie van de Visual Basic-taal instellen voor meer informatie.

Beperkingen bij het opgeven van argumenten bij naam

U kunt geen argumenten op naam doorgeven om het invoeren van vereiste argumenten te vermijden. U kunt alleen de optionele argumenten weglaten.

U kunt geen parameterreeks bij naam passeren. Dit komt omdat wanneer u de procedure aanroept, u een onbeperkt aantal door komma's gescheiden argumenten opgeeft voor de parametermatrix en de compiler niet meer dan één argument aan één naam kan koppelen.

Zie ook