Aracılığıyla paylaş


Nasıl yapılır: Bir Yordam Bağımsız Değişkenini Değer Değişikliklerine Karşı Koruma (Visual Basic)

Bir yordam parametre olarak bildirirse ByRef (Visual Basic), Visual Basic yordam kodunu çağıran kodun değişkeninde temel programlama öğeye doğrudan bir başvuru verir.Bu yordamı çağıran kodun değişkeninde temel değeri değiştirmek için izin verir.Bazı durumlarda, bu tür bir değişiklik karşı korumak çağıran kodun isteyebilirsiniz.

Karşılık gelen parametrenin bildirerek bir bağımsız değişken olarak sayan her zaman koruyabilirsiniz ByVal (Visual Basic) yordamında.Ancak diğer bazı durumlarda belirli bir bağımsız değişkeni değiştirmek istiyorsanız, bunu bildirebilirsiniz ByRef ve her çağrıda geçişini mekanizması belirlemek çağıran kodun izin verin.Bunu değeri geçirmeye parantez içinde ilgili bağımsız değişkeni kapsayan ya da onu başvuruyla geçirmek için parantez içine değil yapar.Daha fazla bilgi için bkz. Nasıl yapılır: Bağımsız Değişkeni Değere Göre Geçirilecek Şekilde Zorlama (Visual Basic).

Örnek

Aşağıdaki örnek, bir dizi değişkeni olması ve işletmek iki yordam üzerinde öğelerini gösterir.increase Yordam yalnızca biri her öğe ekler.replace Yordam parametresi yeni bir dizi atar a() ve her öğe için bir tane ekler.Ancak, çağıran kodun temel dizi değişkeni yeniden atamayı etkilemez.

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(ByVal 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ısı görüntüler "increase(n) sonra: 11, 21, 31, 41".Çünkü dizi n bir başvuru türü olan replace geçişini mekanizması olmasına karşın kendi üyeleri değiştirebilir ByVal.

İkinci MsgBox çağrısı görüntüler "replace(n) sonra: 11, 21, 31, 41".Çünkü n geçirilen ByVal, replace değişkeni değiştirilemez n yeni bir dizi için atayarak çağıran kodun içinde.Zaman replace yeni bir array örneği oluşturur k ve yerel bir değişkene atar a, referansı kaybediyor n çağıran kodun tarafından geçirilen.Üyeleri dönüştüğünde a, yalnızca yerel dizi k etkilenir.Bu nedenle, replace dizi değerlerini artırmaz n çağıran kodun içinde.

Kod Derleniyor

Varsayılan olarak Visual Basic bağımsız değişken değeri geçirmeye çalışır.Ancak, ya da içerecek şekilde uygulama programlama iyi ByVal (Visual Basic) veya ByRef (Visual Basic) anahtar sözcüğüyle bildirilen her parametre.Bu, kodunuzun daha kolay okunmasını sağlar.

Ayrıca bkz.

Görevler

Nasıl yapılır: Bir Yordama Bağımsız Değişkenler Geçirme (Visual Basic)

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

Nasıl yapılır: Bağımsız Değişkeni Değere Göre Geçirilecek Şekilde Zorlama (Visual Basic)

Kavramlar

Visual Basic'de Yordamlar

Yordam Parametreleri ve Bağımsız Değişkenler (Visual Basic)

Bağımsız Değişkenleri Değere ve Başvuruya Göre Geçirme (Visual Basic)

Değiştirilebilir ve Değiştirilemez Bağımsız Değişkenler Arasındaki Farklar (Visual Basic)

Değere ve Başvuruya Göre Bağımsız Değişken Geçirme Arasındaki Farklar (Visual Basic)

Bağımsız Değişkenleri Konuma ve Ada Göre Geçirme (Visual Basic)

Değer Türleri ve Başvuru Türleri