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é podkladové hodnoty argumentu v volajícím kódu. Pokud není zadán žádný modifikátor, je jako výchozí použita hodnota ByVal.
Poznámka
Vzhledem k tomu, že je výchozí hodnota, není nutné explicitně zadat ByVal klíčové slovo v podpisech metody. Je v úmyslu způsobit vysokou úroveň kódu a často vede k přehlédnutí na jiné než výchozí ByRef klíčové slovo.
Poznámky
ByValV těchto kontextech lze použít modifikátor:
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 argumentem c1 instance třídy Class1 . ByVal zabraňuje kódu v postupech v změně podkladové hodnoty argumentu odkazu, c1 ,, ale nechrání dostupná 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