Sdílet prostřednictvím


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é, která je základem argumentu ve volajícím kódu. Pokud není zadán žádný modifikátor, je ByVal výchozí.

Poznámka:

Vzhledem k tomu, že se jedná o výchozí hodnotu, nemusíte explicitně zadávat ByVal klíčové slovo v podpisech metody. Obvykle vytváří hlučný kód a často vede k přehlédnutí jiného než výchozího ByRef klíčového slova.

Poznámky

ByVal Modifikátor lze použít v těchto kontextech:

Příkaz Declare

Příkaz Function

Příkaz Operator

Příkaz Property

Příkaz Sub

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 c1argument , instance třídy Class1. ByVal zabraňuje kódu v procedurách změnit podkladovou hodnotu argumentu odkazu, c1ale nechrání přístupná 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é