Předávání argumentů podle pozice a názvu (Visual Basic)
Při volání procedury nebo můžete předat argumenty podle pozice (v pořadí, ve kterém jsou uvedeny v definici procedury), nebo je můžete předat podle názvu bez ohledu na Sub Function pozici.
Při předání argumentu podle názvu zadáte deklarovaný název argumentu následovaný dvojtečkou a rovnítkem ( ), za ním := následuje hodnota argumentu. Pojmenované argumenty můžete zadat v libovolném pořadí.
Například následující postup Sub přebírá 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í této procedury můžete zadat argumenty podle pozice, podle názvu nebo pomocí kombinace obou.
Předávání argumentů podle pozice
Metodu můžete volat s argumenty předaly podle pozice a oddělené čárkami, jak je znázorněno Display v následujícím příkladu:
StudentInfo.Display("Mary", 19, #9/21/1998#)
Pokud v seznamu pozičních argumentů vy vynechat volitelný argument, musíte jeho místo uchovat čárkou. Následující příklad volá Display metodu bez age argumentu :
StudentInfo.Display("Mary",, #9/21/1998#)
Předávání argumentů podle názvu
Alternativně můžete volat s argumenty předaly podle názvu, také oddělené čárkami, jak je znázorněno Display 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, není k označení chybějících pozičních argumentů muset použít po sobě jdoucí čárky. Předávání argumentů podle názvu také usnadňuje sledování argumentů, které předáváte a které z nich vypouštíte.
Kombinace argumentů podle pozice a 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í k umístění vynechání argumentu nutná žádná další čárka, protože argument je předán age birth názvem .
Ve verzích Visual Basic před 15,5 musí být všechny poziční argumenty na prvním místě, když zadáte argumenty pomocí kombinace pozice a názvu. Po poskytnutí argumentu podle názvu musí být všechny zbývající argumenty předány názvem. Například následující volání metody zobrazí chybu kompilátoru Display BC30241: Byl očekáván pojmenovaný argument.
StudentInfo.Display("Mary", age:=19, #9/21/1998#)
Od Visual Basic 15,5 mohou poziční argumenty dodržovat pojmenované argumenty, pokud jsou koncové poziční argumenty na správné pozici. Pokud je zkompilován Visual Basic 15.5, předchozí volání metody se úspěšně zkompiluje a už negeneruje chybu kompilátoru Display BC30241.
Tato schopnost kombinovat a párovat pojmenované a poziční argumenty v libovolném pořadí je zvláště užitečná, když chcete použít pojmenovaný argument, aby byl váš kód čitelný. Například následující konstruktor třídy vyžaduje dva argumenty typu , z Person nichž oba mohou být Person 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ích argumentů pomáhá jasně určit záměr kódu, pokud je hodnota father mother argumentů a Nothing :
Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)
Pokud chcete postupovat podle pozičních argumentů s pojmenovaných argumentů, musíte do souboru projektu Visual Basic * (.vbproj) přidat následující element:
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Další informace najdete v tématu nastavení Visual Basic jazyka.
Omezení dodávání argumentů podle názvu
Argumenty nelze předávat 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. Je to proto, že při volání procedury zadáte neurčitý počet argumentů oddělených čárkami pro pole parametrů a kompilátor nemůže přidružit více než jeden argument k jednomu názvu.