Bildirilmiş Öğelere Başvurular (Visual Basic)

Kodunuzu bildirilen bir öğeye başvurduğu zaman Visual Basic derleyici bu adı uygun bildirimine başvuru adı eşleşir.Aynı ada sahip birden fazla öğesi bildirilirse, bu öğeler tarafından başvurulacak olduğu kontrol edebilirsiniz uygun adı.

Derleyici adı bildirimiyle adı başvuru eşleştirmeyi dener Dar kapsamı.Bunun anlamı başvuru yapan kod ile başlar ve dışa doğru öğeleri içeren ardışık düzeyleri arasında çalışır.

Aşağıdaki örnek, aynı ada sahip iki değişken başvurular gösterir.Örnek iki değişkeni bildirir, her adlı totalCount, modülü kapsamında, farklı düzeylerde container.Zaman yordam showCount görüntüler totalCount olmadan niteliği, Visual Basic derleyici çözümler bildirimi gibi yerel bildirisinin içinde dar kapsamlı başvuru showCount.Ne zaman niteleyen totalCount içeren modülü ile container, derleyici bildirimi daha geniş kapsamlı başvuru giderir.

' Assume these two modules are both in the same assembly.
Module container
    Public totalCount As Integer = 1
    Public Sub showCount()
        Dim totalCount As Integer = 6000
        ' The following statement displays the local totalCount (6000).
        MsgBox("Unqualified totalCount is " & CStr(totalCount))
        ' The following statement displays the module's totalCount (1).
        MsgBox("container.totalCount is " & CStr(container.totalCount))
    End Sub
End Module
Module callingModule
    Public Sub displayCount()
        container.showCount()
        ' The following statement displays the containing module's totalCount (1).
        MsgBox("container.totalCount is " & CStr(container.totalCount))
    End Sub
End Module

Öğe adını nitelemek

Bu arama işlemi geçersiz kılabilir ve bir ad gerekir daha geniş bir kapsamda bildirilen belirtmek isterseniz, nitelemek kapsayan daha geniş kapsam öğesinin adı.Bazı durumlarda, içerildiği öğe ile ilgili olabilir.

Uygun kaynak deyiminizdeki hedef öğe tanımlandığı tanımlayan bilgileri içeren önceki adı anlamına gelir.Bu bilgiler adlı bir Nitelik dize.Birini içerebilir veya daha fazla ad alanları ve bir modül sınıf veya yapı.

Nitelik dize belirsizliğe yer bırakmadan modülü, sınıf veya yapı hedef öğe içeren belirtmeniz gerekir.Kapsayıcı sırayla başka bir içeren öğesinde, genellikle bir ad alanı bulunabilir.Birkaç içeren öğeleri niteliği dizesini yazmanız gerekebilir.

Adını nitelemek tarafından bildirilen bir öğesine erişmek için

  1. Öğesi tanımlanmış konumu belirleyin.Bu, bir ad veya bir hiyerarşi bile ad alanı içerebilir.Alt düzeydeki ad boşluğunda modülü, sınıf veya yapı öğesi bulunmalıdır.

    ' Assume the following hierarchy exists outside your code.
    Namespace outerSpace
        Namespace innerSpace
            Module holdsTotals
                Public Structure totals
                    Public thisTotal As Integer
                    Public Shared grandTotal As Long
                End Structure
            End Module
        End Namespace
    End Namespace
  2. Hedef öğenin konumuna bağlı nitelik yolunu belirler.En üst düzey ad alanıyla başlatmak, en düşük düzeyde ad alanına devam etmek ve modülü, sınıf veya hedef öğe içeren yapı end.Yoldaki her öğe, onu takip eden öğe içermesi gerekir.

    outerSpace → innerSpace → holdsTotals → totals

  3. Nitelik dize hedef öğe için hazırlayın.Bir nokta koyun (.) yoldaki her öğeden.Uygulamanızın her öğenin nitelik dizenizde erişiminiz olmalıdır.

    outerSpace.innerSpace.holdsTotals.totals.
  4. İfade veya normal bir şekilde hedef öğesine başvuran atama deyimi yazın.

    grandTotal = 9000
  5. Hedef öğe adı niteliği dizesiyle koyun.Adı hemen noktadan sonra gelir (.) modülü, sınıf veya yapı elemanı içeren izler.

    ' Assume the following module is part of your code.
    Module accessGrandTotal
        Public Sub setGrandTotal()
            outerSpace.innerSpace.holdsTotals.totals.grandTotal = 9000
        End Sub
    End Module
  6. Derleyici, hangi hedef öğe başvurusu eşleştirebilirsiniz temiz, belirli bir bildirim bulmak için nitelik dize kullanır.

Aynı ada sahip birden fazla programlama öğesi uygulamanıza erişimi varsa ad başvurusu alabilmek olabilir.Örneğin, System.Windows.Forms ve System.Web.UI.WebControls her iki ad alanlarını içeren bir Label class (Label ve Label).Uygulamanız her ikisi de kullanıyorsa ya da kendi tanımladığından, Label sınıfı, farklı ayırdetmek Label nesneler.Değişken bildiriminde içe veya ad alanı diğer adını içerir.Aşağıdaki örnek alma diğer adı kullanır.

' The following statement must precede all your declarations.
Imports win = System.Windows.Forms, web = System.Web.UI.WebControls
' The following statement references the Windows.Forms.Label class.
Dim winLabel As New win.Label()

Üyeleri içeren diğer öğeler

Paylaşılmayan bir üyesi başka bir sınıf veya yapı kullandığınızda, bir değişken ya da bir sınıf veya yapı örneğine işaret eden ifade üye adıyla nitelemeniz gerekir.Aşağıdaki örnekte, demoClass adlı bir sınıfın bir örneği olan class1.

Dim demoClass As class1 = New class1()
demoClass.someSub[(argumentlist)]

Değil bir üye alabilmek için sınıf adını kullanamazsınız Shared (Visual Basic).Önce bir nesne değişkenine bir örneği oluşturmanız gerekir (Bu durumda demoClass) ve sonra değişken adı baþvurabilirsiniz.

Bir sınıf veya yapı varsa, bir Shared üyesi, size nitelemek o üyeye sınıf veya yapı adıyla veya bir değişken veya bir örneğinin gösterdiği ifade.

Herhangi bir farklı örnekleri bir modüle sahip değildir ve tüm üyeleri Shared varsayılan olarak.Bu nedenle, Modül adı Modül üyesiyle nitelendirin.

Modül üye yordamlarına tam başvuruları aşağıdaki örnekte gösterilmektedir.İki örnek bildirir Sub yordamlar, hem de adlı perform, bir projenin farklı modüllerde.Her biri kendi modülü içinde nitelik olmadan belirtilen ancak gelen başka herhangi bir yerde başvurulan nitelikli olmalıdır.Son başvuru çünkü module3 nitelemek değil perform, derleyici bu başvurusu çözümlenemiyor.

' Assume these three modules are all in the same assembly.
Module module1
    Public Sub perform()
        MsgBox("module1.perform() now returning")
    End Sub
End Module
Module module2
    Public Sub perform()
        MsgBox("module2.perform() now returning")
    End Sub
    Public Sub doSomething()
        ' The following statement calls perform in module2, the active module.
        perform()
        ' The following statement calls perform in module1.
        module1.perform()
    End Sub
End Module
Module module3
    Public Sub callPerform()
        ' The following statement calls perform in module1.
        module1.perform()
        ' The following statement makes an unresolvable name reference
        ' and therefore generates a COMPILER ERROR.
        perform() ' INVALID statement
    End Sub
End Module

Proje başvuruları

Kullanmak için Public (Visual Basic) başka bir projede tanımlanan öğelerin, önce ayarlamanız gerekir bir başvuru bu projenin derleme veya tür kitaplığına.Başvuru ayarlamak için tıklatın Add Reference , Proje menü veya kullanım /reference (Visual Basic) komut satırı derleme seçeneği.

Örneğin, xml nesne modelini kullanabilirsiniz .NET Framework.Başvuru ayarlarsanız, System.Xml ad alanı bildirmek ve herhangi bir alt sınıfları gibi kullanmak XmlDocument.Aşağıdaki örnek XmlDocument.

' Assume this project has a reference to System.Xml
' The following statement creates xDoc as an XML document object.
Dim xDoc As System.Xml.XmlDocument

Öğeleri içeren içe aktarma

Kullanabileceğiniz Imports Deyimi (.NET Ad Alanı ve Türü) için almak modüller veya kullanmak istediğiniz sınıfları içeren ad.Bu, tam adlarını niteleme olmadan alınan bir ad alanında tanımlanan öğelerin başvurmak sağlar.Aşağıdaki örnek, önceki örnek alınacak yeniden yazar System.Xml ad.

' Assume this project has a reference to System.Xml
' The following statement must precede all your declarations.
Imports System.Xml
' The following statement creates xDoc as an XML document object.
Dim xDoc As XmlDocument

Buna ek olarak, Imports ifadesi tanımlayabilirsiniz bir diğer almak alınan her ad alanı.Bu kaynak kodunu daha kısa ve daha okunur duruma getirebilirsiniz.Aşağıdaki örnek önceki örneği kullanmak için yeniden yazar xD için bir diğer ad olarak System.Xml ad.

' Assume this project has a reference to System.Xml
' The following statement must precede all your declarations.
Imports xD = System.Xml
' The following statement creates xDoc as an XML document object.
Dim xDoc As xD.XmlDocument

Imports Deyimi değil yapmak diğer projelerden öğeleri uygulamanız için kullanılabilir.Diğer bir deyişle, başvuru ayarlama yer almaz.Bir ad alanı yalnızca alma o ad alanında tanımlanan adları niteleme gereksinimini ortadan kaldırır.

Ayrıca Imports modülleri, sınıflar, yapılar ve numaralandırma almak için deyimi.Alınan bu tür öðelere niteliği olmayan üyeleri daha sonra kullanabilirsiniz.Ancak, sınıflar ve yapılar bir değişken veya sınıf veya yapı örneğine değerlendirir bir ifade ile paylaşılmayan üyeleri her zaman nitelemeniz gerekir.

Adlandırma yönergeleri

Aynı ada sahip iki veya daha fazla programlama öğeleri tanımladığınızda bir adlarýn derleyici bir ada başvuru çözümlemeye çalışırken neden olabilir.Kapsam içinde birden fazla bir tanım ise veya hiçbir tanımı kapsamında ise, başvuru irresolvable.Örneğin, "Tam başvuru Example" Bu Yardım sayfasında bakın.

Tüm öğeleri benzersiz adlar vererek adlarýn önleyebilirsiniz.Sonra ad, modül veya sınıf kendi adıyla nitelemeniz gerek kalmadan herhangi bir öğeye başvuru yapabilirsiniz.Ayrıca, yanlışlıkla yanlış öğesine başvuran olasılığını da azaltır.

Gölgeleme

İki programlama öğelerine aynı adı paylaşan, bunlardan birini gizleyebilirsiniz, veya Gölge, diğeri.Gölgeli bir öğe başvurusu için kullanılamaz; Bunun yerine, kodunuzu kullandığında gölgeli öğe adı Visual Basic derleyici giderir, gölgeleme öğesine.Örneklerle birlikte daha ayrıntılı bir açıklama için bkz: Visual Basic'de Gölgeleme.

Ayrıca bkz.

Görevler

Nasıl Yapılır: Proje Özelliklerini ve Yapılandırma Ayarlarını Değiştirme

Başvuru

Imports Deyimi (.NET Ad Alanı ve Türü)

New İşleci (Visual Basic)

Public (Visual Basic)

Kavramlar

Bildirilen Öğe Adları (Visual Basic)

Bildirilen Öğe Özellikleri (Visual Basic)

Visual Basic'de Değişkenler