Nasıl yapılır: Bir Yordam Bağımsız Değişkeninin Değerini Değiştirme (Visual Basic)

Bir yordamı çağırdığınızda, sağladığınız her bağımsız değişken yordamda tanımlanan parametrelerden birine karşılık gelir. Bazı durumlarda yordam kodu, çağıran koddaki bir bağımsız değişkenin temel alınan değerini değiştirebilir. Diğer durumlarda, yordam bağımsız değişkenin yalnızca yerel kopyasını değiştirebilir.

Yordamı çağırdığınızda, Visual Basic ByVal geçirilen her bağımsız değişkenin yerel bir kopyasını oluşturur. ByRef ile geçirilen her bağımsız değişken için Visual Basic, yordam koduna, çağıran koddaki bağımsız değişkenin temel aldığı programlama öğesine doğrudan başvuru verir.

Çağıran koddaki temel öğe değiştirilebilir bir öğeyse ve bağımsız değişkeni geçirilirse ByRef, yordam kodu, öğesinin çağıran koddaki değerini değiştirmek için doğrudan başvuruyu kullanabilir.

Temel Alınan Değeri Değiştirme

Çağıran koddaki bir yordam bağımsız değişkeninin temel değerini değiştirmek için

  1. Yordam bildiriminde bağımsız değişkene karşılık gelen parametre için ByRef değerini belirtin.

  2. Çağıran kodda, bağımsız değişken olarak değiştirilebilir bir programlama öğesi geçirin.

  3. Çağıran kodda bağımsız değişkeni bağımsız değişken listesinde parantez içine alma.

  4. Yordam kodunda, çağıran koddaki temel öğeye bir değer atamak için parametre adını kullanın.

Bir gösterim için daha aşağı doğru örne bakın.

Yerel Kopyaları Değiştirme

Çağıran koddaki temel öğe değiştirilemeyen bir öğeyse veya bağımsız değişken geçirildiyse ByVal, yordam çağıran koddaki değerini değiştiremez. Ancak, yordam böyle bir bağımsız değişkenin yerel kopyasını değiştirebilir.

Yordam kodundaki bir yordam bağımsız değişkeninin kopyasını değiştirmek için

  1. Yordam bildiriminde bağımsız değişkene karşılık gelen parametre için ByVal değerini belirtin.

    -veya-

    Çağıran kodda bağımsız değişkeni bağımsız değişken listesinde parantez içine alın. Bu, ilgili parametre belirtse bile Visual Basic'i bağımsız değişkeni değere göre geçirmeye zorlar ByRef.

  2. Yordam kodunda parametre adını kullanarak bağımsız değişkenin yerel kopyasına bir değer atayın. Çağıran koddaki temel değer değiştirilmez.

Örnek

Aşağıdaki örnekte bir dizi değişkeni alan ve öğeleri üzerinde çalışan iki yordam gösterilmektedir. Yordam increase , her öğeye bir tane ekler. yordam parametresine replacea() yeni bir dizi atar ve ardından her öğeye bir dizi ekler.

Public Sub increase(ByVal a() As Long)
    For j As Integer = 0 To UBound(a)
        a(j) = a(j) + 1
    Next j
End Sub
Public Sub replace(ByRef a() As Long)
    Dim k() As Long = {100, 200, 300}
    a = k
    For j As Integer = 0 To UBound(a)
        a(j) = a(j) + 1
    Next j
End Sub
Dim n() As Long = {10, 20, 30, 40}
Call increase(n)
MsgBox("After increase(n): " & CStr(n(0)) & ", " & 
    CStr(n(1)) & ", " & CStr(n(2)) & ", " & CStr(n(3)))
Call replace(n)
MsgBox("After replace(n): " & CStr(n(0)) & ", " & 
    CStr(n(1)) & ", " & CStr(n(2)) & ", " & CStr(n(3)))

İlk MsgBox çağrıda "Artış sonrası(n): 11, 21, 31, 41" görüntülenir. Dizi n bir başvuru türü olduğundan, replace geçirme mekanizması olsa ByValbile üyelerini değiştirebilir.

İkinci MsgBox çağrıda "Değiştirildikten sonra(n): 101, 201, 301" görüntülenir. n geçirildiğindenByRef, replace çağıran koddaki değişkeni n değiştirebilir ve buna yeni bir dizi atayabilir. Bir n başvuru türü olduğundan, replace üyelerini de değiştirebilir.

Yordamın çağıran kodda değişkenin kendisini değiştirmesini engelleyebilirsiniz. Bkz . Nasıl yapılır: Yordam Bağımsız Değişkenlerini Değer Değişikliklerine Karşı Koruma.

Kodu derleme

Bir değişkeni başvuruya göre geçirirken, bu mekanizmayı belirtmek için anahtar sözcüğünü ByRef kullanmanız gerekir.

Visual Basic'te varsayılan değer, bağımsız değişkenleri değere göre geçirmektir. Ancak, bildirilen her parametreye ByVal veya ByRef anahtar sözcüğünü eklemek iyi bir programlama uygulamasıdır. Bu, kodunuzun okunmasını kolaylaştırır.

.NET Framework Güvenliği

Bir yordamın, çağıran koddaki bir bağımsız değişkenin değerini değiştirmesine izin vermenin her zaman olası bir riski vardır. Bu değerin değiştirilmesini beklediğinizi ve kullanmadan önce geçerliliğini denetlemeye hazır olduğunuzdan emin olun.

Ayrıca bkz.