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

Yordam bildirimi, geçiş mekanizmasını belirler. Bir parametre ByRef olarak bildirilirse, Visual Basic ilgili bağımsız değişkeni başvuruya göre geçirmeyi bekler. Bu, yordamın çağıran koddaki bağımsız değişkeni temel alan programlama öğesinin değerini değiştirmesine olanak tanır. Temel alınan öğeyi bu tür bir değişikliğe karşı korumak istiyorsanız, bağımsız değişken adını parantez içine alarak yordam çağrısında geçirme mekanizmasını geçersiz kılabilirsiniz ByRef . Bu ayraçlar, bağımsız değişken listesini çağrının içine alan ayraçlara ek olarak bulunur.

Çağıran kod ByVal mekanizmasını geçersiz kılamaz.

Bir bağımsız değişkenin değere göre geçirilmesini zorlamak için

  • Yordamda ilgili parametre bildirilirse ByVal , ek bir adım uygulamanız gerekmez. Visual Basic bağımsız değişkeni değere göre geçirmeyi zaten bekliyor.

  • İlgili parametre yordamda bildirilirse ByRef , bağımsız değişkeni yordam çağrısında parantez içine alın.

Örnek

Aşağıdaki örnek bir ByRef parametre bildirimini geçersiz kılar. öğesini zorlayan ByValçağrıda iki parantez düzeyine dikkat edin.

Sub setNewString(ByRef inString As String)
    inString = "This is a new value for the inString argument."
    MsgBox(inString)
End Sub
Dim str As String = "Cannot be replaced if passed ByVal"

' The following call passes str ByVal even though it is declared ByRef.
Call setNewString((str))
' The parentheses around str protect it from change.
MsgBox(str)

' The following call allows str to be passed ByRef as declared.
Call setNewString(str)
' Variable str is not protected from change.
MsgBox(str)

Bağımsız değişken listesinin içinde fazladan parantezler içinde olduğunda str , setNewString yordam çağıran koddaki değerini değiştiremez ve MsgBox "ByVal geçirilirse değiştirilemez" ifadesini görüntüler. Ek parantez içine alınmadığında str , yordam bunu değiştirebilir ve MsgBox "Bu, inString bağımsız değişkeni için yeni bir değerdir" ifadesini görüntüler.

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.

Güçlü Programlama

Bir yordam bir ByRef parametresi bildirirse, kodun doğru yürütülmesi, çağıran koddaki temel öğeyi değiştirebilmesine bağlı olabilir. Çağıran kod bağımsız değişkeni parantez içine alarak bu çağırma mekanizmasını geçersiz kılarsa veya değiştirilemez bir bağımsız değişken geçirirse, yordam temel öğeyi değiştiremez. Bu, çağıran kodda beklenmeyen sonuçlara neden olabilir.

.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.