ByVal (Visual Basic)

Bir bağımsız değişkenin değerine göre geçirerekçağrılı yordam veya özelliğin, çağıran koddaki bağımsız değişkenin temel alınan değerini değiştiremesi için belirtir. Hiçbir değiştirici belirtilmezse ByVal varsayılan değerdir.

Not

Varsayılan değer olduğundan, yöntem imzalarında anahtar sözcüğünü açıkça ByVal belirtmeniz gerekmez. Gürültülü kod üretme eğilimindedir ve genellikle varsayılan olmayan anahtar sözcüğün göz ardı ByRef edilmeyen yollarına yol açıyor.

Açıklamalar

Değiştirici ByVal şu bağlamlarda kullanılabilir:

Declare Deyimi

Function Deyimi

Operator Deyimi

Property Deyimi

Sub Deyimi

Örnek

Aşağıdaki örnek, başvuru türü bağımsız ByVal değişkeniyle parametre geçirme mekanizmasının kullanımını gösteriyor. Örnekte bağımsız değişkeni sınıfının c1 bir Class1 örneğidir. ByVal yordamlarında kodun başvuru bağımsız değişkeninin temel değerini değiştirmesini önlemez, ancak erişilebilir c1 alanları ve özelliklerini c1 korumaz.

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

Ayrıca bkz.