Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Po przekazaniu co najmniej jednego argumentu do procedury każdy argument odpowiada bazowemu elementowi programowania w kodzie wywołującym. Możesz przekazać wartość tego elementu bazowego lub odwołanie do niego. Jest to nazywane mechanizmem przekazywania.
Przekazywanie według wartości
Argument należy przekazać według wartości , określając słowo kluczowe ByVal dla odpowiedniego parametru w definicji procedury. W przypadku korzystania z tego mechanizmu przekazywania język Visual Basic kopiuje wartość bazowego elementu programowania do zmiennej lokalnej w procedurze. Kod procedury nie ma dostępu do bazowego elementu w kodzie wywołującym.
Przekazywanie według odwołania
Argument jest przekazywany przez odwołanie , określając słowo kluczowe ByRef dla odpowiedniego parametru w definicji procedury. W przypadku korzystania z tego mechanizmu przekazywania Visual Basic udostępnia procedurze bezpośrednie odwołanie do podstawowego elementu programowania w kodzie wywołującym.
Mechanizm przekazywania i typ elementu
Wybór mechanizmu przekazywania nie jest taki sam jak klasyfikacja podstawowego typu elementu. Przekazywanie wartości lub przez odwołanie odnosi się do tego, co Visual Basic dostarcza kodowi procedury. Typ wartości lub typ odwołania odnosi się do sposobu przechowywania elementu programowania w pamięci.
Jednak mechanizm przekazywania i typ elementu są powiązane. Wartość typu referencyjnego jest wskaźnikiem do danych znajdujących się w innym miejscu w pamięci. Oznacza to, że po przekazaniu typu odwołania według wartości kod procedury ma wskaźnik do danych elementu bazowego, mimo że nie może uzyskać dostępu do samego elementu bazowego. Na przykład jeśli element jest zmienną tablicową, kod procedury nie ma dostępu do samej zmiennej, ale może uzyskać dostęp do składowych tablicy.
Możliwość modyfikowania
Po przekazaniu elementu niemodyfikowalnego jako argumentu procedura nigdy nie może modyfikować go w kodzie wywołującym, niezależnie od tego, czy jest przekazywany ByVal , czy ByRef.
W przypadku elementu modyfikowalnego poniższa tabela zawiera podsumowanie interakcji między typem elementu a mechanizmem przekazywania.
| Typ elementu | Przekazano ByVal |
Przekazano ByRef |
|---|---|---|
| Typ wartości (zawiera tylko wartość) | Procedura nie może zmienić zmiennej ani żadnego z jej członków. | Procedura może zmienić zmienną i jej składowe. |
| Typ odwołania (zawiera wskaźnik do instancji klasy lub struktury) | Procedura nie może zmienić zmiennej, ale może zmienić składowe wystąpienia, na które wskazuje. | Procedura może zmienić zmienne i członków wystąpienia, na które wskazuje. |
Zobacz także
- Procedury
- Parametry i argumenty procedury
- Instrukcje: przekazywanie argumentów do procedury
- Przekazywanie argumentów przez wartość i przez referencję
- Różnice między argumentami modyfikowalnymi i niemodyfikowalnymi
- Instrukcje: zmienianie wartości argumentu procedury
- Instrukcje: ochrona argumentu procedury przed zmianami wartości
- Jak wymusić przekazanie argumentu przez wartość
- Przekazywanie argumentów według pozycji i według nazwy
- typy wartości i typy referencyjne