Aracılığıyla paylaş


Nasıl yapılır: yordam değişken değeri değiştiğinde (Visual Basic) karşı koruma

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: (Visual Basic) değeriyle geçirilecek bağımsız değişken zorla.

Ö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: Pass bağımsız bir yordam (Visual Basic)

Nasıl yapılır: (Visual Basic) bir yordam değişken değerini değiştirin

Nasıl yapılır: (Visual Basic) değeriyle geçirilecek bağımsız değişken zorla

Kavramlar

Visual Basic'teki yordamlar

Yordam parametreleri ve bağımsız değişkenler (Visual Basic)

Argümanları değeri ve başvuru (Visual Basic)

Değiştirilebilir ve Nonmodifiable bağımsız değişkenleri (Visual Basic) arasındaki farklar

Bağımsız değişken değeri ve başvuru (Visual Basic) tarafından geçirerek arasındaki farklar

Argümanları konumu ve adı (Visual Basic)

Değer türleri ile başvuru türleri