Sdílet prostřednictvím


Předávání argumentů podle pozice a názvu (Visual Basic)

Při volání Sub nebo Function procedury můžete předat argumenty podle pozice – v pořadí, ve kterém se zobrazí v definici procedury – nebo je můžete předat podle názvu, bez ohledu na pozici.

Když předáte argument podle názvu, zadáte deklarovaný název argumentu následovaný dvojtečku a znaménkem rovná se (:=), za nímž následuje hodnota argumentu. Pojmenované argumenty můžete zadat v libovolném pořadí.

Například následující Sub postup má tři argumenty:

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

Při volání tohoto postupu můžete zadat argumenty podle pozice, podle názvu nebo pomocí kombinace obou.

Předávání argumentů podle pozice

Metodu Display můžete volat s argumenty předanými podle pozice a oddělovačem čárkami, jak je znázorněno v následujícím příkladu:

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

Pokud v seznamu pozičních argumentů vynecháte nepovinný argument, musíte jeho místo uchovávat čárkou. Následující příklad volá metodu Display bez argumentu age :

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

Předávání argumentů podle názvu

Alternativně můžete volat Display s argumenty předanými názvem, které jsou také oddělené čárkami, jak je znázorněno v následujícím příkladu:

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

Předávání argumentů tímto způsobem je zvlášť užitečné při volání procedury, která má více než jeden volitelný argument. Pokud zadáte argumenty podle názvu, nemusíte k označení chybějících pozičních argumentů používat po sobě jdoucí čárky. Předávání argumentů podle názvu také usnadňuje sledování toho, které argumenty předáváte a které argumenty vynecháte.

Kombinování argumentů podle pozice a podle názvu

Argumenty můžete zadat jak podle pozice, tak podle názvu v jednom volání procedury, jak je znázorněno v následujícím příkladu:

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

V předchozím příkladu není nutné žádné nadbytečné čárky obsahovat místo vynechaného age argumentu, protože birth je předán názvem.

Ve verzích jazyka Visual Basic před verzí 15.5 musí být všechny argumenty při zadávání argumentů kombinací pozice a názvu první. Jakmile zadáte argument podle názvu, všechny zbývající argumenty musí být předány podle názvu. Například následující volání metody zobrazuje chybu kompilátoru Display BC30241: Byl očekáváný pojmenovaný argument.

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

Počínaje jazykem Visual Basic 15.5 mohou poziční argumenty následovat za pojmenovanými argumenty, pokud jsou koncové poziční argumenty ve správné pozici. Pokud je zkompilován v jazyce Visual Basic 15.5, předchozí volání Display metody se úspěšně zkompiluje a již negeneruje chybu kompilátoru BC30241.

Tato schopnost kombinovat a shodovat pojmenované a poziční argumenty v libovolném pořadí je obzvláště užitečná, když chcete použít pojmenovaný argument, aby byl kód čitelnější. Například následující Person konstruktor třídy vyžaduje dva argumenty typu Person, z nichž oba mohou být Nothing.

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

Použití smíšených pojmenovaných a pozičníchargumentch fathermotherNothing

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

Chcete-li sledovat poziční argumenty s pojmenovanými argumenty, musíte do souboru projektu jazyka Visual Basic (*.vbproj) přidat následující prvek:

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

Další informace najdete v tématu Nastavení jazykové verze jazyka Visual Basic.

Omezení zadávání argumentů podle názvu

Argumenty nelze předat podle názvu, abyste se vyhnuli zadávání požadovaných argumentů. Můžete vynechat pouze volitelné argumenty.

Pole parametrů nelze předat podle názvu. Důvodem je to, že při volání procedury zadáte neomezený počet argumentů oddělených čárkami pro pole parametrů a kompilátor nemůže přidružit více než jeden argument s jedním názvem.

Viz také