Freigeben über


ByVal (Visual Basic)

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:

Declare-Anweisung

Funktionsanweisung

Operator-Erklärung

Eigenschaftserklärung

Sub-Anweisung

Beispiel

Im folgenden Beispiel wird die Verwendung des Mechanismus für die ByVal Parameterübergabe mit einem Verweistypargument veranschaulicht. Im Beispiel ist c1das Argument eine Instanz der Klasse Class1. ByVal verhindert, dass der Code in den Prozeduren den zugrunde liegenden Wert des Verweisarguments ändert, c1aber 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

Siehe auch