Lista parametrów (Visual Basic)
Określa parametry, których procedura oczekuje po wywołaniu. Wiele parametrów jest rozdzielonych przecinkami. Poniżej przedstawiono składnię dla jednego parametru.
Składnia
[ <attributelist> ] [ Optional ] [{ ByVal | ByRef }] [ ParamArray ]
parametername[( )] [ As parametertype ] [ = defaultvalue ]
generatora
attributelist
Opcjonalny. Lista atrybutów, które mają zastosowanie do tego parametru. Należy ująć listę atrybutów w nawiasach kątowych ("<
" i ">
").
Optional
Opcjonalny. Określa, że ten parametr nie jest wymagany, gdy wywoływana jest procedura.
ByVal
Opcjonalny. Określa, że procedura nie może zastąpić lub ponownie przypisać elementu zmiennej bazowego odpowiedniego argumentu w kodzie wywołującym.
ByRef
Opcjonalny. Określa, że procedura może zmodyfikować podstawowy element zmiennej w kodzie wywołującym w taki sam sposób, jak sam kod wywołujący.
ParamArray
Opcjonalny. Określa, że ostatni parametr na liście parametrów jest opcjonalną tablicą elementów określonego typu danych. Dzięki temu kod wywołujący przekazuje dowolną liczbę argumentów do procedury.
parametername
Wymagany. Nazwa zmiennej lokalnej reprezentującej parametr .
parametertype
Wymagane, jeśli Option Strict
ma wartość On
. Typ danych zmiennej lokalnej reprezentującej parametr .
defaultvalue
Wymagane dla Optional
parametrów. Dowolne wyrażenie stałe lub stałe, które oblicza typ danych parametru. Jeśli typ to Object
, lub klasa, interfejs, tablica lub struktura, wartość domyślna może być Nothing
tylko .
Uwagi
Parametry są otoczone nawiasami i oddzielone przecinkami. Parametr można zadeklarować przy użyciu dowolnego typu danych. Jeśli nie określisz parametertype
parametru , wartość domyślna to Object
.
Podczas wywoływania kodu wywołuje procedurę, przekazuje argument do każdego wymaganego parametru. Aby uzyskać więcej informacji, zobacz Różnice między parametrami i argumentami.
Argument, który kod wywołujący przekazuje do każdego parametru, jest wskaźnikiem do bazowego elementu w kodzie wywołującym. Jeśli ten element nie jest niezmienny (stała, literał, wyliczenie lub wyrażenie), nie można zmienić żadnego kodu. Jeśli jest to element zmiennej (zadeklarowana zmienna, pole, właściwość, element tablicy lub element struktury), kod wywołujący może go zmienić. Aby uzyskać więcej informacji, zobacz Różnice między argumentami modyfikowalnymi i niemodyfikowalnymi.
Jeśli element zmiennej zostanie przekazany ByRef
, procedura może ją również zmienić. Aby uzyskać więcej informacji, zobacz Różnice między przekazywaniem argumentu według wartości a odwołaniem.
Reguły
Nawiasy. Jeśli określisz listę parametrów, musisz ująć ją w nawiasy. Jeśli nie ma parametrów, nadal można użyć nawiasów otaczających pustą listę. Poprawia to czytelność kodu, wyjaśniając, że element jest procedurą.
Parametry opcjonalne. Jeśli używasz modyfikatora dla parametru
Optional
, wszystkie kolejne parametry na liście muszą być również opcjonalne i zadeklarowane przy użyciuOptional
modyfikatora.Każda opcjonalna deklaracja parametru musi podać klauzulę
defaultvalue
.Aby uzyskać więcej informacji, zobacz Parametry opcjonalne.
Tablice parametrów. Należy określić
ByVal
parametrParamArray
.Nie można używać obu
Optional
tych parametrów iParamArray
na tej samej liście parametrów.Aby uzyskać więcej informacji, zobacz Tablice parametrów.
Mechanizm przekazywania. Domyślny mechanizm dla każdego argumentu to
ByVal
, co oznacza, że procedura nie może zmienić bazowego elementu zmiennej. Jeśli jednak element jest typem odwołania, procedura może zmodyfikować zawartość lub elementy członkowskie obiektu bazowego, mimo że nie może zastąpić ani ponownie przypisać samego obiektu.Nazwy parametrów. Jeśli typ danych parametru jest tablicą, a następnie
parametername
natychmiast po nawiasach. Aby uzyskać więcej informacji na temat nazw parametrów, zobacz Deklarowane nazwy elementów.
Przykład
W poniższym przykładzie przedstawiono procedurę Function
, która definiuje dwa parametry.
Public Function HowMany(ByVal ch As Char, ByVal st As String) As Integer
End Function
Dim howManyA As Integer = HowMany("a"c, "How many a's in this string?")