Porady: zmienianie wartości argumentu procedury (Visual Basic)
Po wywołaniu procedury, każdego argumentu, który można dostarczyć odpowiada jednemu parametry określone w procedurze.W niektórych przypadkach kod procedury można zmienić wartość, leżących u podstaw argumentu kod wywołujący.W innych przypadkach procedury można zmienić tylko jego lokalną kopię argumentu.
Gdy wywołanie procedury, Visual Basic lokalną kopię każdego argumentu, który jest przekazywany sprawia, że ByVal (Visual Basic).Dla każdego argumentu przekazany ByRef (Visual Basic), Visual Basic daje Kodeksu postępowania bezpośredniego odwołania do elementu programowania, leżących u podstaw argument kod wywołujący.
Jeśli element podstawowej w kod wywołujący jest modyfikowane przez element, a argument jest przekazywany ByRef, kod procedury można użyć bezpośredniego odwołania do zmiany wartości elementu w kod wywołujący.
Zmiana wartości podstawowej
Aby zmienić podstawowe wartości argumentu procedury w kod wywołujący
W deklaracji procedury należy określić ByRef (Visual Basic) dla parametru odpowiadające argument.
W polu kod wywołujący przekazać można modyfikować elementu programowania jako argumentu.
W polu kod wywołujący nie należy ujmować argument w nawiasach, na liście argumentów.
W kodzie procedury należy użyć nazwy parametru do przypisania wartości do podstawowego elementu w kod wywołujący.
Zobacz przykład dalsze w dół do demonstracji.
Zmienianie lokalnych kopii
Jeśli element podstawowej w kod wywołujący jest nonmodifiable element lub jeśli argument jest przekazywany ByVal, procedury nie można zmienić jego wartość w polu kod wywołujący.Procedura może jednak zmienić jego lokalna kopia argumentu.
Aby zmienić Kopia argumentu procedury w kodzie procedury
W deklaracji procedury należy określić ByVal (Visual Basic) dla parametru odpowiadające argument.
- lub -
W polu kod wywołujący należy ująć argument w nawiasach, na liście argumentów.Zmusza to Visual Basic do przekazywania argumentu według wartości, nawet jeśli określa odpowiedni parametr ByRef.
W kodzie procedury należy użyć nazwy parametru do przypisania wartości do lokalnej kopii argument.Wartości podstawowej w kod wywołujący nie jest zmieniany.
Przykład
Poniższy przykład pokazuje dwie procedury, które podjąć zmiennej array i działają na jego elementy.increase Procedury po prostu dodaje jeden do każdego elementu.replace Procedury przypisuje nową tablicę do parametru a() , a następnie dodaje do każdego elementu.
Public Sub increase(ByVal a() As Long)
For j As Integer = 0 To UBound(a)
a(j) = a(j) + 1
Next j
End Sub
Public Sub replace(ByRef a() As Long)
Dim k() As Long = {100, 200, 300}
a = k
For j As Integer = 0 To UBound(a)
a(j) = a(j) + 1
Next j
End Sub
Dim n() As Long = {10, 20, 30, 40}
Call increase(n)
MsgBox("After increase(n): " & CStr(n(0)) & ", " &
CStr(n(1)) & ", " & CStr(n(2)) & ", " & CStr(n(3)))
Call replace(n)
MsgBox("After replace(n): " & CStr(n(0)) & ", " &
CStr(n(1)) & ", " & CStr(n(2)) & ", " & CStr(n(3)))
Pierwszy MsgBox wywołania Wyświetla "po increase(n): 11, 21, 31, 41".Ponieważ tablica n jest typem odwołania, replace można zmienić jej członków, mimo że mechanizm przekazywania jest ByVal.
Drugi MsgBox wywołania Wyświetla "po replace(n): 101, 201 301".Ponieważ n jest przekazywana ByRef, replace można zmodyfikować zmienną n kod wywołujący i przypisz nową tablicę do niego.Ponieważ n jest typem odwołania, replace można również zmienić jej członków.
Aby zapobiec procedury modyfikowania samej zmiennej w polu kod wywołujący.See Porady: chronienie argumentu procedury przed zmianami wartości (Visual Basic).
Kompilowanie kodu
Jeśli zmienna jest przekazywany za pomocą odwołania, należy użyć ByRef słowo kluczowe, aby określić ten mechanizm.
Domyślnie w Visual Basic jest przekazywanie argumentów przez wartość.Jednak dobrą praktyką włączyć albo programowania jest ByVal (Visual Basic) lub ByRef (Visual Basic) słowa kluczowego z każdej zadeklarowanej parametru.Ułatwia to kod do odczytu.
Zabezpieczenia
W umożliwianiu procedury zmienić wartość, leżących u podstaw argumentu kod wywołujący zawsze istnieje potencjalne ryzyko.Upewnij się, że można oczekiwać, że tę wartość można zmienić i przygotowywane do sprawdzania poprawności, przed użyciem go.
Zobacz też
Zadania
Porady: przekazywanie argumentów do procedury (Visual Basic)
Porady: chronienie argumentu procedury przed zmianami wartości (Visual Basic)
Porady: wymuszanie przekazywania argumentu przez wartość (Visual Basic)
Koncepcje
Parametry i argumenty procedur (Visual Basic)
Przekazywanie argumentów według wartości i według odwołania (Visual Basic)
Różnice pomiędzy argumentami modyfikowalnymi i niemodyfikowalnymi (Visual Basic)
Różnice pomiędzy przekazywaniem argumentu według wartości i według odwołania (Visual Basic)
Przekazywanie argumentów według pozycji i według nazwy (Visual Basic)