Jak: Vynutit Argument předání hodnotou (Visual Basic)
Prohlášení postup určuje mechanismus předávání.Pokud je deklarována jako parametr Parametr ByRef (Visual Basic), Visual Basic očekává, že předávají odpovídající argument odkazem.To umožňuje postupem změnit hodnotu programovací element podkladových argument volající kód.Pokud chcete chránit základní prvek proti takové změně, můžete přepsat ByRef mechanismus předávání postupem volání uzavřením argument názvu v závorkách.Tyto závorky jsou navíc závorky ohraničení seznamu argument volání.
Volající kód nelze přepsat ByVal (Visual Basic) mechanismu.
Argument hodnota předání vynutit
Pokud je deklarována odpovídajícího parametru ByVal v postupu, není nutné žádné další kroky.Visual BasicOčekává se již předat argument hodnota.
Pokud je deklarována odpovídajícího parametru ByRef v postupu, uveďte argument v závorkách volání procedury.
Příklad
Následující příklad změní ByRef deklaraci parametru.Ve volání, které vynutí ByVal, poznamenejte si dvě úrovně závorek.
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)
Při str uzavřený v závorkách extra v seznamu argumentů setNewString jeho hodnoty volající kód nelze změnit postup a MsgBox zobrazí "Nelze nahradit, pokud je předán ByVal".Při str není uzavřena v závorkách extra, postup lze změnit, a MsgBox zobrazí "Toto je nová hodnota argumentu inString."
Probíhá kompilace kódu
Když předáte proměnnou odkazem, musíte použít ByRef klíčové slovo zadat tento mechanismus.
Výchozí v Visual Basic je předat argumenty podle hodnoty.Je však dobré praxe zahrnout buď programování ByVal (Visual Basic) nebo Parametr ByRef (Visual Basic) každý parametr prohlášených klíčové slovo.Kód tím snadněji číst.
Robustní programování
Pokud postup deklaruje parametr Parametr ByRef (Visual Basic), správné provádění kódu závisí na možnost změnit základní prvek v volající kód.Pokud volající kód přepíše tento mechanismus volající uzavřením argument do závorek nebo předá nonmodifiable argument, postup nelze změnit základní prvek.To může vést k neočekávaným výsledkům v volající kód.
Zabezpečení
Změnit hodnotu argumentu volající kód základní postup, který umožňuje vždy existuje potenciální riziko.Zkontrolujte, zda že očekávat tuto hodnotu změnit, a připravit zkontrolovat platnost před jeho použitím.
Viz také
Úkoly
Jak: předat argumenty procedury (Visual Basic)
Jak: Změňte hodnotu argumentu procedury (Visual Basic)
Jak: chránit postup Argument proti změny hodnot (Visual Basic)
Koncepty
Procedury v jazyce Visual Basic
Postup parametry a argumenty (Visual Basic)
Předávání argumentů hodnotou a odkaz (Visual Basic)
Rozdíly mezi argumenty upravitelné a Nonmodifiable (Visual Basic)
Rozdíly mezi předáním Argument hodnotu a odkaz (Visual Basic)