ByVal (Visual Basic)

Určuje, že argument je předán hodnotou, takže volaná procedura nebo vlastnost nemůže změnit hodnotu proměnné podkladové hodnoty argumentu v volajícím kódu. Pokud není zadán žádný modifikátor, je jako výchozí použita hodnota ByVal.

Poznámka

Vzhledem k tomu, že je výchozí hodnota, není nutné explicitně zadat ByVal klíčové slovo v podpisech metody. Je v úmyslu způsobit vysokou úroveň kódu a často vede k přehlédnutí na jiné než výchozí ByRef klíčové slovo.

Poznámky

ByValV těchto kontextech lze použít modifikátor:

Declare – příkaz

Function – příkaz

Operator – příkaz

Property – příkaz

Sub – příkaz

Příklad

Následující příklad ukazuje použití ByVal mechanismu předávání parametrů s argumentem typu odkazu. V příkladu je argumentem c1 instance třídy Class1 . ByVal zabraňuje kódu v postupech v změně podkladové hodnoty argumentu odkazu, c1 ,, ale nechrání dostupná pole a vlastnosti 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

Viz také