ByVal (Visual Basic)

Bir bağımsız değişkenin değere göre geçirildiğini belirtir, böylece çağrılan yordam veya özellik, çağıran kodda bağımsız değişkenin temel aldığı değişkenin değerini değiştiremez. Değiştirici belirtilmezse ByVal varsayılan değerdir.

Not

Varsayılan olduğundan, yöntem imzalarında anahtar sözcüğü açıkça belirtmeniz ByVal gerekmez. Gürültülü kod üretme eğilimindedir ve genellikle varsayılan ByRef olmayan anahtar sözcüğün gözden kaçmasına yol açar.

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 örnekte, başvuru türü bağımsız değişkeniyle parametre geçirme mekanizmasının ByVal kullanımı gösterilmektedir. Örnekte bağımsız değişken, sınıfının Class1bir örneğidirc1. ByVal yordamlardaki kodun başvuru bağımsız değişkeninin temel değerini değiştirmesini engeller, c1ancak erişilebilir alanlarını ve özelliklerini c1korumaz.

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.