Udostępnij za pośrednictwem


Porady: wymuszanie przekazywania argumentu przez wartość (Visual Basic)

Deklaracja procedura określa mechanizm przekazywania.Jeśli parametr jest zadeklarowany jako ByRef (Visual Basic), Visual Basic oczekuje, że odpowiednie argument jest przekazywany za pomocą odniesienia.Dzięki temu procedury zmienić wartość elementu programowania, leżących u podstaw argument kod wywołujący.Jeśli chcesz chronić podstawowym elementem przeciwko takiej zmiany, można zastąpić ByRef mechanizmu przekazywania w procedurze wywołanie umieszczając Nazwa argumentu w nawiasach.Te nawiasy są dodatkowo nawiasów, załączając listy argument w wywołaniu.

Nie można zastąpić kod wywołujący ByVal (Visual Basic) mechanizmu.

Aby wymusić przekazywane przez wartość argumentu

  • Jeżeli zadeklarowano odpowiedniego parametru ByVal w procedurze, nie trzeba podjąć dodatkowe kroki.Visual Basicjuż oczekuje argument jest przekazywany za pomocą wartości.

  • Jeżeli zadeklarowano odpowiedniego parametru ByRef w procedurze, należy ująć w nawiasach w wywołaniu procedury argument.

Przykład

Poniższy przykład zastępuje ByRef deklaracji parametru.W wywołaniu, która wymusza ByVal, Uwaga dwa poziomy nawiasów.

Sub setNewString(ByRef inString As String)
    inString = "This is a new value for the inString argument."
    MsgBox(inString)
End Sub
Dim str As String = "Cannot be replaced if passed ByVal" 

' The following call passes str ByVal even though it is declared ByRef. 
Call setNewString((str))
' The parentheses around str protect it from change.
MsgBox(str)

' The following call allows str to be passed ByRef as declared. 
Call setNewString(str)
' Variable str is not protected from change.
MsgBox(str)

Gdy str jest ujęty w dodatkowych nawiasach w obrębie listy argumentów setNewString procedury nie można zmienić jego wartość w polu kod wywołujący i MsgBox wyświetla "nie mogą być zastąpione, jeżeli nie przekazano ByVal".Gdy str nie jest ujęty w dodatkowych nawiasach procedury można zmienić, i MsgBox Wyświetla "Jest nową wartość argumentu inString".

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.

Stabilne programowanie

Jeżeli procedura deklaruje parametr ByRef (Visual Basic), prawidłowe wykonanie kodu może być zależna możliwość zmiany podstawowych elementów w kod wywołujący.Jeśli kod wywołujący zastępuje ten mechanizm wywoływania umieszczając argument w nawiasach lub przekazaniem nonmodifiable argument, procedury nie można zmienić elementu podstawowej.Może to spowodować nieoczekiwane wyniki w kod wywołujący.

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: zmienianie wartości argumentu procedury (Visual Basic)

Porady: chronienie argumentu procedury przed zmianami wartości (Visual Basic)

Koncepcje

Procedury w Visual Basic

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)

Typy wartości i odwołań