Freigeben über


ByVal (Visual Basic)

Kennzeichnet ein Argument, das so übergeben wird, dass der Wert einer Variablen, die dem Argument im Aufrufcode zugrunde liegt, von der aufgerufenen Prozedur oder Eigenschaft nicht geändert werden kann.

Hinweise

Der ByVal-Modifizierer kann in folgenden Kontexten verwendet werden:

Declare-Anweisung

Function-Anweisung (Visual Basic)

Operator-Anweisung

Property-Anweisung

Sub-Anweisung (Visual Basic)

Beispiel

Im folgenden Beispiel wird die Verwendung des Übergabemechanismus für den ByVal-Parameter mit einem Referenztypargument veranschaulicht. Im Beispiel ist das c1-Argument eine Instanz der Class1-Klasse. ByVal verhindert, dass der zugrunde liegende Wert des c1-Verweisarguments vom Code in den Prozeduren geändert wird, die Felder und Eigenschaften von c1, auf die zugegriffen werden kann, sind jedoch nicht geschützt.

Module Module1

    Sub Main()

        ' Declare an instance of the class and assign a value to its field.
        Dim c1 As Class1 = New Class1()
        c1.Field = 5
        Console.WriteLine("Original value for the field: " & c1.Field)

        ' ByVal does not prevent changing the value of a field or property.
        ChangeFieldValue(c1)
        Console.WriteLine("Value of field after ChangeFieldValue: " & c1.Field)

        ' ByVal does prevent changing the value of c1 itself. 
        ChangeClassReference(c1)
        Console.WriteLine("Value of field after ChangeClassReference: " & c1.Field)

    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

Konzepte

Übergeben von Argumenten als Wert und als Verweis (Visual Basic)

Weitere Ressourcen

Schlüsselwörter (Visual Basic)