Różnice pomiędzy przekazywaniem argumentu według wartości i według odwołania (Visual Basic)
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 język Visual Basic udostępnia procedurę bezpośrednią odwołanie do bazowego 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 do kodu 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 odwołania jest wskaźnikiem do danych 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 | Przekazywane ByVal |
Przekazywane ByRef |
---|---|---|
Typ wartości (zawiera tylko wartość) | Procedura nie może zmienić zmiennej ani żadnego z jej elementów członkowskich. | Procedura może zmienić zmienną i jej składowe. |
Typ odwołania (zawiera wskaźnik do wystąpienia klasy lub struktury) | Procedura nie może zmienić zmiennej, ale może zmienić elementy członkowskie wystąpienia, na które wskazuje. | Procedura może zmienić zmienną i elementy członkowskie wystąpienia, na które wskazuje. |
Zobacz też
- z konkretnym obiektem
- Parametry i argumenty procedur
- Instrukcje: przekazywanie argumentów do procedury
- Przekazywanie argumentów według wartości i według odwołania
- Różnice między argumentami modyfikowalnymi i niemodyfikowalnymi
- Instrukcje: zmiana wartości argumentu procedury
- Instrukcje: ochrona argumentu procedury przed zmianami wartości
- Instrukcje: wymuszanie przekazywania argumentu przez wartość
- Przekazywanie argumentów według pozycji i według nazwy
- Typy wartości i odwołań