Nasıl yapılır: Değişkeninizle Aynı Adı Taşıyan Bir Değişkeni Gizleme (Visual Basic)
Bir değişkeni gölgeleyerek, yani aynı adlı bir değişkenle yeniden tanımlayarak gizleyebilirsiniz. Gizlemek istediğiniz değişkeni iki şekilde gölgeleyebilirsiniz:
Kapsam Boyunca Gölgeleme. Gizlemek istediğiniz değişkeni içeren bölgenin bir alt bölgesi içinde yeniden ekleyerek kapsamı gölgeleyebilirsiniz.
Devralma yoluyla gölgeleme. Gizlemek istediğiniz değişken sınıf düzeyinde tanımlanmışsa, türetilmiş bir sınıftaki Shadows anahtar sözcüğüyle yeniden oluşturarak devralma yoluyla onu gölgeleyebilirsiniz.
Değişkeni Gizlemenin İki Yolu
Bir değişkeni kapsam boyunca gölgelendirmek suretiyle gizlemek için
Gizlemek istediğiniz değişkeni tanımlayan bölgeyi belirleyin ve değişkeninizle yeniden tanımlayabileceğiniz bir alt bölge belirleyin.
Değişkenin bölgesi Yeniden tanımlama için izin verilebilen alt bölge Modül Modül içindeki bir sınıf Sınıf Sınıfın içindeki bir alt sınıf
Sınıfı içindeki bir yordamBu yordam içindeki bir bloktaki bir yordam değişkenlerini yeniden tanımlayamazsınız, örneğin bir ...
End If
yapısında veyaFor
döngüsündeIf
.Henüz yoksa alt bölge oluşturun.
Alt bölge içinde, gölgeleme değişkenini belirten bir Dim Deyimi yazın.
Alt bölge içindeki kod değişken adına başvurduğunda, derleyici gölgeleme değişkenine başvuruyu çözümler.
Aşağıdaki örnekte kapsam boyunca gölgelendirmenin yanı sıra gölgelendirmeyi atlayan bir başvuru gösterilmektedir.
Module shadowByScope ' The following statement declares num as a module-level variable. Public num As Integer Sub show() ' The following statement declares num as a local variable. Dim num As Integer ' The following statement sets the value of the local variable. num = 2 ' The following statement displays the module-level variable. MsgBox(CStr(shadowByScope.num)) End Sub Sub useModuleLevelNum() ' The following statement sets the value of the module-level variable. num = 1 show() End Sub End Module
Yukarıdaki örnekte değişken
num
hem modül düzeyinde hem de yordam düzeyinde (yordamdashow
) bildirilmektedir. Yerel değişkennum
içindekishow
modül düzeyi değişkeninum
gölgeler, bu nedenle yerel değişken 2 olarak ayarlanır. Ancak, yordamdauseModuleLevelNum
gölgelendirmeknum
için yerel değişken yoktur. Bu nedenle modüluseModuleLevelNum
düzeyi değişkeninin değerini 1 olarak ayarlar.içindeki
MsgBox
show
çağrı, modül adıyla nitelenereknum
gölgeleme mekanizmasını atlar. Bu nedenle, yerel değişken yerine modül düzeyi değişkenini görüntüler.
Devralma yoluyla gölgelendirme yaparak bir değişkeni gizlemek için
Gizlemek istediğiniz değişkenin bir sınıfta ve sınıf düzeyinde (herhangi bir yordamın dışında) bildirildiğinden emin olun. Aksi takdirde devralma yoluyla gölgeleyemezsiniz.
Henüz yoksa değişkenin sınıfından türetilmiş bir sınıf tanımlayın.
Türetilmiş sınıfın içinde değişkeninizi belirten bir
Dim
deyim yazın. Bildirime Shadows anahtar sözcüğünü ekleyin.Türetilmiş sınıftaki kod değişken adına başvurduğunda, derleyici değişkeninize başvuruyu çözümler.
Aşağıdaki örnek, devralma yoluyla gölgelendirmeyi gösterir. Biri gölgelendirme değişkenine erişen ve diğeri gölgelendirmeyi atlayan iki başvuru yapar.
Public Class shadowBaseClass Public shadowString As String = "This is the base class string." End Class Public Class shadowDerivedClass Inherits shadowBaseClass Public Shadows shadowString As String = "This is the derived class string." Public Sub showStrings() Dim s As String = "Unqualified shadowString: " & shadowString & vbCrLf & "MyBase.shadowString: " & MyBase.shadowString MsgBox(s) End Sub End Class
Yukarıdaki örnek, temel sınıfta değişkeni
shadowString
bildirir ve türetilmiş sınıfta bunu gölgeler. Türetilmiş sınıftaki yordamshowStrings
, adshadowString
nitelenmediğinde dizenin gölgeli sürümünü görüntüler. Ardından anahtar sözcükleMyBase
nitelendiğindeshadowString
gölgeli sürümü görüntüler.
Güçlü Programlama
Gölgeleme, bir değişkenin aynı ada sahip birden fazla sürümünü tanıtır. Bir kod deyimi değişken adına başvurduğunda, derleyicinin başvuruyu çözümlediği sürüm, kod deyiminin konumu ve uygun bir dizenin varlığı gibi faktörlere bağlıdır. Bu, gölgeli değişkenin istenmeyen bir sürümüne başvurma riskini artırabilir. Gölgeli bir değişkene yapılan tüm başvuruları tam olarak niteleyerek bu riski düşürebilirsiniz.