Delen via


Argumenten doorgeven op positie en op naam (Visual Basic)

Wanneer u een Sub of Function meer procedures aanroept, kunt u argumenten doorgeven op positie , in de volgorde waarin ze worden weergegeven in de definitie van de procedure, 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 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 op naam

U kunt ook aanroepen Display met de argumenten die zijn doorgegeven op naam, ook gescheiden 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 argument weggelaten age op te geven, omdat birth deze wordt doorgegeven door de 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. De volgende aanroep van de Display methode geeft bijvoorbeeld compilerfout weer 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 gecompileerd en wordt er geen compilerfout meer gegenereerd BC30241.

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 voor het opgeven van argumenten op naam

U kunt geen argumenten op naam doorgeven om te voorkomen dat vereiste argumenten worden ingevoerd. U kunt alleen de optionele argumenten weglaten.

U kunt geen parametermatrix doorgeven op naam. 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