ByVal (Visual Basic)

Megadja, hogy az argumentumot érték adja át, így a hívott eljárás vagy tulajdonság nem módosíthatja az argumentum alapjául szolgáló változó értékét a hívókódban. Ha nincs megadva módosító, akkor a ByVal az alapértelmezett érték.

Feljegyzés

Mivel ez az alapértelmezett érték, nem kell explicit módon megadnia a kulcsszót a ByVal metódus-aláírásokban. Általában zajos kódot hoz létre, és gyakran a nem alapértelmezett ByRef kulcsszó figyelmen kívül hagyásához vezet.

Megjegyzések

A ByVal módosító az alábbi környezetekben használható:

Nyilatkozat deklarálása

Függvényutasítás

Operátori utasítás

Tulajdonságutasítás

Alutasítás

Példa

Az alábbi példa a paraméterátadási ByVal mechanizmus használatát mutatja be hivatkozástípus-argumentummal. A példában az argumentum az c1osztály Class1egy példánya. ByVal megakadályozza, hogy az eljárások kódja módosítsa a referenciaargumentum mögöttes értékét, c1de nem védi az akadálymentes mezőket és tulajdonságokat 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

Lásd még