ByVal (Visual Basic)
Określa, że argument jest przekazywany przez wartość, tak aby wywołana procedura lub właściwość nie mogła zmienić wartości zmiennej bazowej argumentu w kodzie wywołującym. Jeśli nie określono modyfikatora, wartość domyślna to ByVal.
Uwaga
Ponieważ jest to ustawienie domyślne, nie trzeba jawnie określać słowa kluczowego ByVal
w podpisach metod. Zwykle generuje hałaśliwy kod i często prowadzi do pomijania słowa kluczowego innego niż domyślne ByRef
.
Uwagi
Modyfikator ByVal
może być używany w następujących kontekstach:
Przykład
W poniższym przykładzie pokazano użycie mechanizmu przekazywania parametrów ByVal
z argumentem typu odwołania. W tym przykładzie argumentem jest c1
, wystąpienie klasy Class1
. ByVal
uniemożliwia zmianę bazowej wartości argumentu odwołania w kodzie w procedurach, c1
ale nie chroni dostępnych pól i właściwości c1
elementu .
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