Aracılığıyla paylaş


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

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

    Bu yordam içindeki bir bloktaki bir yordam değişkenlerini yeniden tanımlayamazsınız, örneğin bir ...End If yapısında veya For döngüsündeIf.

  2. Henüz yoksa alt bölge oluşturun.

  3. 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 (yordamda show) bildirilmektedir. Yerel değişken num içindeki showmodül düzeyi değişkeni num gölgeler, bu nedenle yerel değişken 2 olarak ayarlanır. Ancak, yordamda useModuleLevelNum gölgelendirmek num için yerel değişken yoktur. Bu nedenle modül useModuleLevelNum düzeyi değişkeninin değerini 1 olarak ayarlar.

    içindeki MsgBoxshow çağrı, modül adıyla nitelenerek num 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

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

  2. Henüz yoksa değişkenin sınıfından türetilmiş bir sınıf tanımlayın.

  3. 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 yordam showStrings , ad shadowString nitelenmediğinde dizenin gölgeli sürümünü görüntüler. Ardından anahtar sözcükle MyBase nitelendiğinde shadowString 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.

Ayrıca bkz.