Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 / Notatka
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, c1ale nie chroni dostępnych pól i właściwości c1elementu .
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