Aracılığıyla paylaş


Nasıl yapılır: Değişkeninizle Aynı İsme Sahip 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 Üzerinden Gölgeleme. Kapsamı gölgelemek için gizlemek istediğiniz değişkeni içeren bölgenin bir alt bölgesi içinde yeniden tanımlayabilirsiniz.

  • Miras yoluyla gölgeleme. Gizlemek istediğiniz değişken sınıf düzeyinde tanımlanmışsa, türetilmiş bir sınıfta Shadows anahtar sözcüğünü kullanarak onu miras yoluyla yeniden deklarasyon yaparak gölgeleyebilirsiniz.

Değişkeni Gizlemenin İki Yolu

Bir değişkeni, kapsam kullanarak gölgelendirip 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 prosedür

    Bir prosedür içindeki bir blokta prosedür değişkenini yeniden tanımlayamazsınız, örneğin bir If...End If yapısında veya bir For döngüsünde.

  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 nummodül düzeyi değişkeni show gölgeler, bu nedenle yerel değişken 2 olarak ayarlanır. Ancak, yordamda num'u gölgelemek için yerel bir değişken yoktur. Bu nedenle modül useModuleLevelNum düzeyi değişkeninin değerini 1 olarak ayarlar.

    Çağrı MsgBox içinde show, modül adı belirtilerek 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 kalıtım yoluyla üstünü örtemezsiniz.

  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 nitelendirilmediğinde dizenin gölgeleme sürümünü görüntüler. Ardından, shadowString öğesi MyBase anahtar sözcüğüyle nitelendiğinde gölgeli sürümünü görüntüler.

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