ByVal (Visual Basic)
Určuje, že argument je předán hodnotou, takže volaná procedura nebo vlastnost nemůže změnit hodnotu proměnné, která je základem argumentu ve volajícím kódu. Pokud není zadán žádný modifikátor, je ByVal výchozí.
Poznámka:
Vzhledem k tomu, že se jedná o výchozí hodnotu, nemusíte explicitně zadávat ByVal
klíčové slovo v podpisech metody. Obvykle vytváří hlučný kód a často vede k přehlédnutí jiného než výchozího ByRef
klíčového slova.
Poznámky
ByVal
Modifikátor lze použít v těchto kontextech:
Příklad
Následující příklad ukazuje použití ByVal
mechanismu předávání parametrů s argumentem typu odkazu. V příkladu je c1
argument , instance třídy Class1
. ByVal
zabraňuje kódu v procedurách změnit podkladovou hodnotu argumentu odkazu, c1
ale nechrání přístupná pole a vlastnosti c1
.
Module Module1
Sub Main()
' Declare an instance of the class and assign a value to its field.
Dim c1 As New Class1()
c1.Field = 5
Console.WriteLine(c1.Field)
' Output: 5
' ByVal does not prevent changing the value of a field or property.
ChangeFieldValue(c1)
Console.WriteLine(c1.Field)
' Output: 500
' ByVal does prevent changing the value of c1 itself.
ChangeClassReference(c1)
Console.WriteLine(c1.Field)
' Output: 500
Console.ReadKey()
End Sub
Public Sub ChangeFieldValue(ByVal cls As Class1)
cls.Field = 500
End Sub
Public Sub ChangeClassReference(ByVal cls As Class1)
cls = New Class1()
cls.Field = 1000
End Sub
Public Class Class1
Public Field As Integer
End Class
End Module