ByVal (Visual Basic)
Gibt an, dass ein Argument als Wert übergeben wird, sodass die aufgerufene Prozedur oder Eigenschaft den Wert einer zugrunde liegenden Variable des Arguments im aufrufenden Code nicht ändern kann. Wenn kein Modifizierer angegeben ist, ist ByVal der Standard.
Hinweis
Daher müssen Sie das Schlüsselwort ByVal
nicht explizit in Methodensignaturen angeben. Sie erzeugt in der Regel einen ausführlichen Code und führt häufig dazu, dass das ByRef
-Schlüsselwort übersehen wird, das nicht Standard ist.
Bemerkungen
Der ByVal
-Modifizierer kann in folgenden Kontexten verwendet werden:
Beispiel
Im folgenden Beispiel wird die Verwendung des Parameterübergabemechanismus ByVal
mit einem Verweistypargument veranschaulicht. Im Beispiel ist c1
das Argument, eine Instanz der Class1
-Klasse. ByVal
verhindert, dass der Code in den Prozeduren den zugrunde liegenden Wert des Verweisarguments c1
ändert, schützt jedoch nicht die zugänglichen Felder und Eigenschaften von 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