Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt an, dass ein Argument nach Wert übergeben wird, sodass die aufgerufene Prozedur oder Eigenschaft den Wert einer Variablen, die dem Argument im aufrufenden Code zugrunde liegt, nicht ändern kann. Wenn kein Modifizierer angegeben ist, ist ByVal der Standardwert.
Hinweis
Da es sich um die Standardeinstellung handelt, müssen Sie das ByVal
Schlüsselwort nicht explizit in Methodensignaturen angeben. Es erzeugt häufig lauten Code und führt häufig dazu, dass das nicht standardmäßige ByRef
Schlüsselwort übersehen wird.
Bemerkungen
Der ByVal
Modifizierer kann in folgenden Kontexten verwendet werden:
Beispiel
Im folgenden Beispiel wird die Verwendung des Mechanismus für die ByVal
Parameterübergabe mit einem Verweistypargument veranschaulicht. Im Beispiel ist c1
das Argument eine Instanz der Klasse Class1
.
ByVal
verhindert, dass der Code in den Prozeduren den zugrunde liegenden Wert des Verweisarguments ändert, c1
aber nicht die barrierefreien 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