Udostępnij za pomocą


Różnice między przekazywaniem argumentu przez wartość a przez odwołanie (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 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