Aracılığıyla paylaş


Nasıl Yapılır: Argümanı Değere Göre Zorla Geçirmek (Visual Basic)

Prosedür bildirimi, aktarım mekanizmasını belirler. Bir parametre ByRef olarak bildirilirse, Visual Basic ilgili bağımsız değişkeni başvurarak iletmesini 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, yordam çağrısında ByRef geçirme mekanizmasını, bağımsız değişken adını parantez içine alarak geçersiz kılabilirsiniz. Bu ayraçlar, çağrıdaki bağımsız değişken listesini kapsayan 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 olan parametre prosedürde ByRef olarak bildirilirse, yordam çağrısında bağımsız değişkeni parantez içine alın.

Örnek

Aşağıdaki örnek bir ByRef parametre bildirimini geçersiz kılar. ByVal'yi içeren çağrıda, iki parantez seviyesine 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 ByRef anahtar sözcüğünü kullanmanız gerekir.

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.

Sağlam 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 bakınız