Aracılığıyla paylaş


Değişkeni Değerle ve Referansla Geçirme Arasındaki Farklar (Visual Basic)

Bir yordama bir veya daha fazla bağımsız değişken geçirdiğinizde, her bağımsız değişken çağıran koddaki temel bir programlama öğesine karşılık gelir. Bu temel öğenin değerini veya öğeye bir referansı geçirebilirsiniz. Bu, geçiş mekanizması olarak bilinir.

Değere Göre Geçirme

Yordam tanımında karşılık gelen parametre için ByVal anahtar sözcüğünü belirterek bir bağımsız değişkeni değere göre geçirirsiniz. Bu geçiş mekanizmasını kullandığınızda, Visual Basic temel programlama öğesinin değerini yordamdaki yerel bir değişkene kopyalar. Prosedür kodunun çağrı kodundaki temel öğeye herhangi bir erişimi yoktur.

Başvuruya Göre Geçirme

Yordam tanımında karşılık gelen parametre için ByRef anahtar sözcüğünü belirterek bir argümanı referansla geçirirsiniz. Bu geçiş mekanizmasını kullandığınızda, Visual Basic yordama çağrı kodundaki temel programlama öğesine doğrudan başvuru verir.

Geçirme Mekanizması ve Öğe Türü

Geçirme mekanizması seçimi, temel alınan öğe türünün sınıflandırmasıyla aynı değildir. Visual Basic'in yordam koduna sağladığı şeyin değere veya başvuruya göre aktarılmasını ifade eder. Değer türü veya başvuru türü, bir programlama öğesinin bellekte nasıl depolandığını ifade eder.

Ancak, geçiş mekanizması ve öğe türü birbiriyle ilişkilidir. Başvuru türünün değeri, belleğin başka bir yerindeki verilere işaret eden bir işaretçidir. Bu, bir referans türünü değere göre geçirdiğinizde, yordam kodunun, temel alınan öğenin verilerine bir işaretçi aracılığıyla erişebildiği, ancak öğenin kendisine doğrudan erişemediği anlamına gelir. Örneğin, öğesi bir dizi değişkeniyse, yordam kodunun değişkenin kendisine erişimi yoktur, ancak dizi üyelerine erişebilir.

Değiştirme Yeteneği

Değiştirilemeyen bir öğeyi bağımsız değişken olarak geçirdiğinizde, prosedür, öğe ByVal veya ByRef olarak geçirilmiş olsun, çağıran kodda bunu hiçbir zaman değiştiremez.

Değiştirilebilir bir öğe için, aşağıdaki tabloda öğe türü ile geçirme mekanizması arasındaki etkileşim özetlemektedir.

Öğe türü Geçti ByVal Geçti ByRef
Değer türü (yalnızca bir değer içerir) Prosedür, değişkeni veya üyelerinden herhangi birini değiştiremez. Prosedür değişkeni ve üyelerini değiştirebilir.
Başvuru türü (bir sınıf veya yapı örneğine işaretçi içerir) Prosedür değişkeni değiştiremez ancak işaret ettiği örneğin üyelerini değiştirebilir. Prosedür, değişkeni ve işaret ettiği örneğin üyelerini değiştirebilir.

Ayrıca bakınız