Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir yordam bir parametreyi ByRef olarak bildirirse, Visual Basic yordam koduna çağıran koddaki bağımsız değişkenin temel aldığı programlama öğesine doğrudan başvuru verir. Bu, prosedürün çağıran koddaki bağımsız değişkenin altındaki değeri değiştirmesine olanak tanır. Bazı durumlarda, çağıran kod bu tür bir değişikliğe karşı korumak isteyebilir.
Yordamda ilgili ByVal parametresini bildirerek bağımsız değişkeni değişiklikten her zaman koruyabilirsiniz. Belirli bir bağımsız değişkeni bazı durumlarda değiştirmek istiyorsanız ancak diğer durumlarda aynen bırakmak istiyorsanız, onu ByRef olarak tanımlayabilir ve çağrı kodunun her çağrıda geçiş mekanizmasını belirlemesine izin verebilirsiniz. Bunu, değere göre geçirmek için ilgili bağımsız değişkeni parantez içine alarak veya referansa göre geçirmek için parantez içine almayarak yapar. Daha fazla bilgi için bkz: Nasıl Yapılır: Bağımsız Değişkeni Değere Göre Geçirilmeye Zorlama.
Örnek
Aşağıdaki örnek, bir dizi değişkeni alıp öğeleri üzerinde çalışan iki prosedürü göstermektedir. Yordam increase , her öğeye bir tane ekler.
replace yordamı, a() parametresine yeni bir dizi atar ve ardından her öğeye bir ekler. Ancak, yeniden atama, çağrı kodundaki temel dizi değişkenini 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ı, "Artırıldıktan sonra(n): 11, 21, 31, 41" şeklinde görüntülenir. Dizi n bir başvuru türü olduğundan, aktarım mekanizması increase olsa bile, ByVal üyelerini değiştirebilir.
İkinci MsgBox çağrıda "replace(n) işlevinden sonra: 11, 21, 31, 41" görüntülenir.
n geçirildiği için ByVal, replace yeni bir dizi atayarak çağıran koddaki n değişkenini değiştiremez.
replace yeni dizi örneğini k oluşturup yerel değişkenine a atadığında, çağıran kod tarafından geçirilen başvuruyu n kaybeder.
a'nin üyeleri değiştirildiğinde, yalnızca k adlı yerel dizi etkilenir. Bu nedenle, replace çağıran koddaki dizi n değerlerini artırmaz.
Kodu derleme
Visual Basic'te varsayılan ayar, bağımsız değişkenleri değer üzerinden 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.
Ayrıca bakınız
- Prosedürler
- Prosedür Parametreleri ve Bağımsız Değişkenleri
- Nasıl yapılır: Argümanları Bir Yordama Aktarma
- Argümanları Değerle ve Referansla Geçirme
- Değiştirilebilir ve Değiştirilemez Argümanlar Arasındaki Farklar
- Bir Argümanı Değerle ve Referansla Geçirme Arasındaki Farklar
- Nasıl yapılır: Bir Yordam Parametresinin Değerini Değiştirme
- Nasıl yapılır: Bağımsız Değişkeni Değer Olarak Geçmeye Zorlama
- Pozisyon ve Adına Göre Argümanları Geçirme
- Değer Türleri ve Referans Türleri