ByVal (Visual Basic)

Określa, że argument jest przekazywany przez wartość, tak aby wywołana procedura lub właściwość nie mogła zmienić wartości zmiennej bazowej argumentu w kodzie wywołującym. Jeśli nie określono modyfikatora, wartość domyślna to ByVal.

Uwaga

Ponieważ jest to ustawienie domyślne, nie trzeba jawnie określać słowa kluczowego ByVal w podpisach metod. Zwykle generuje hałaśliwy kod i często prowadzi do pomijania słowa kluczowego innego niż domyślne ByRef .

Uwagi

Modyfikator ByVal może być używany w następujących kontekstach:

Declare, instrukcja

Function, instrukcja

Operator, instrukcja

Property, instrukcja

Sub, instrukcja

Przykład

W poniższym przykładzie pokazano użycie mechanizmu przekazywania parametrów ByVal z argumentem typu odwołania. W tym przykładzie argumentem jest c1, wystąpienie klasy Class1. ByVal uniemożliwia zmianę bazowej wartości argumentu odwołania w kodzie w procedurach, c1ale nie chroni dostępnych pól i właściwości c1elementu .

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

Zobacz też