Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas wywoływania Sub
procedury lub Function
można przekazać argumenty według pozycji — w kolejności, w której są wyświetlane w definicji procedury — lub można przekazać je według nazwy, bez względu na pozycję.
Po przekazaniu argumentu według nazwy należy określić zadeklarowaną nazwę argumentu, po której następuje dwukropek i znak równości (:=
), a następnie wartość argumentu. Można podać nazwane argumenty w dowolnej kolejności.
Na przykład poniższa Sub
procedura przyjmuje trzy 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
Wywołając tę procedurę, można podać argumenty według pozycji, nazwy lub kombinacji obu tych metod.
Przekazywanie argumentów według pozycji
Metodę Display
można wywołać przy użyciu argumentów przekazywanych według pozycji i rozdzielonych przecinkami, jak pokazano w poniższym przykładzie:
StudentInfo.Display("Mary", 19, #9/21/1998#)
Jeśli pominięto opcjonalny argument w liście argumentów pozycyjnych, należy pozostawić jego miejsce przecinkiem. Poniższy przykład wywołuje metodę Display
bez argumentu age
:
StudentInfo.Display("Mary",, #9/21/1998#)
Przekazywanie argumentów według nazwy
Alternatywnie można wywołać Display
z argumentami przekazanymi przez nazwę, również rozdzielanymi przecinkami, jak pokazano w poniższym przykładzie:
StudentInfo.Display(age:=19, birth:=#9/21/1998#, name:="Mary")
Przekazywanie argumentów według nazwy w ten sposób jest szczególnie przydatne podczas wywoływania procedury, która posiada więcej niż jeden opcjonalny argument. Jeśli podasz argumenty według nazwy, nie musisz używać kolejnych przecinków do oznaczania brakujących argumentów pozycyjnych. Przekazywanie argumentów według nazwy ułatwia również śledzenie przekazywanych argumentów i pomijanych argumentów.
Mieszanie argumentów według pozycji i według nazwy
Argumenty można podać zarówno według pozycji, jak i według nazwy w jednym wywołaniu procedury, jak pokazano w poniższym przykładzie:
StudentInfo.Display("Mary", birth:=#9/21/1998#)
W poprzednim przykładzie nie trzeba stosować dodatkowego przecinka do utrzymania miejsca pominiętego age
argumentu, ponieważ birth
jest przekazywany jako nazwany argument.
W wersjach języka Visual Basic przed 15.5, gdy dostarczasz argumenty jako kombinację pozycji oraz nazwy, argumenty pozycyjne muszą pojawić się jako pierwsze. Po podaniu argumentu według nazwy wszystkie pozostałe argumenty muszą być przekazywane według nazwy. Na przykład, następujące wywołanie metody Display
wyświetla błąd kompilatora BC30241: Nazwany argument oczekiwany.
StudentInfo.Display("Mary", age:=19, #9/21/1998#)
Począwszy od języka Visual Basic 15.5, argumenty pozycyjne mogą podążać za nazwanymi argumentami, jeśli końcowe argumenty pozycyjne znajdują się w prawidłowej pozycji. Jeśli skompilowany w programie Visual Basic 15.5, poprzednie wywołanie metody Display
jest pomyślnie skompilowane i przestaje generować błąd kompilatora BC30241.
Ta możliwość łączenia i dopasowywania argumentów nazwanych i pozycyjnych w dowolnej kolejności jest szczególnie przydatna, gdy chcesz użyć nazwanego argumentu, aby kod był bardziej czytelny. Na przykład następujący Person
konstruktor klasy wymaga dwóch argumentów typu Person
, oba z nich mogą być Nothing
.
Public Sub New(name As String, father As Person, mother As Person, dateOfBirth As Date)
Użycie mieszanych argumentów nazwanych i pozycyjnych pomaga uczynić intencję kodu bardziej przejrzystą, gdy wartość argumentów father
i mother
to Nothing
.
Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)
Aby postępować zgodnie z argumentami pozycyjnymi z nazwanymi argumentami, należy dodać następujący element do pliku projektu Visual Basic (*.vbproj):
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Aby uzyskać więcej informacji, zobacz ustawianie wersji języka Visual Basic.
Ograniczenia dotyczące podawania argumentów według nazwy
Nie można przekazać argumentów według nazwy, aby uniknąć wprowadzania wymaganych argumentów. Można pominąć tylko opcjonalne argumenty.
Nie można przekazać tablicy parametrów według nazwy. Dzieje się tak dlatego, że podczas wywoływania procedury należy podać nieokreśloną liczbę argumentów rozdzielanych przecinkami dla tablicy parametrów, a kompilator nie może skojarzyć więcej niż jednego argumentu z jedną nazwą.