Aracılığıyla paylaş


Visual Basic'de Ad Alanları

Ad alanları bir derlemede tanımlanmış nesneleri düzenler.Derlemeler sırayla diğer ad alanları içeren birden fazla ad alanları içerebilir.Ad alanları, belirsizlik önlemek ve sınıf kitaplıkları gibi büyük nesne gruplarını kullanırken başvuruları basitleştirin.

Örneğin, .NET Framework tanımlayan ListBox , sınıf System.Windows.Forms ad.Aşağıdaki kod parçası, bu sınıf tam nitelikli adını kullanarak bir değişken bildirmek gösterilmiştir:

Dim LBox As System.Windows.Forms.ListBox

Ad çakışmaları engelleme

.NET Frameworkad adres olarak da adlandırılan bir sorun ad kirliliğine, içinde bir sýnýf kitaplýðý geliştirici tarafından başka bir kitaplıktaki benzer adları kullanımını hampered.Bu çakışmalar var bileşenleri ile adlandırılan ad çakışması.

Örneğin, adında yeni bir sınıf oluşturmak, ListBox, niteliği olmayan proje içinde kullanabilirsiniz.Bununla birlikte kullanmak istiyorsanız, .NET FrameworkListBox sınıfı aynı projede başvuru benzersiz yapmak için tam bir başvuru kullanmanız gerekir. Başvuru benzersiz değilse, Visual Basic adı belirsiz olduğunu belirten bir hata üretir.Aşağıdaki kod örneği, bu nesneleri bildirebileceğiniz gösterilmiştir:

' Define a new object based on your ListBox class. 
Dim LBC As New ListBox
' Define a new Windows.Forms ListBox control. 
Dim MyLB As New System.Windows.Forms.ListBox

Her ikisi de içeren adlı bir nesne iki ad alanı sıradüzenleri aşağıda gösterilmiştir ListBox.

Ad alanı hiyerarşisi

Varsayılan olarak, her bir yürütülebilir dosya ile oluşturduğunuz Visual Basic proje olarak aynı adı taşıyan bir ad alanı içerir.Örneğin, adlı bir proje içinde bir nesneyi tanımlamanız ListBoxProject, ListBoxProject.exe yürütülebilir dosya adı verilen bir ad alanı içeren ListBoxProject.

Birden çok derleme aynı ad alanını kullanabilirsiniz.Visual Basicbunları tek dizi adları değerlendirir.Örneğin, adı verilen bir ad alanı sınıfları tanımlayabilirsiniz SomeNameSpace adlı bir derleme de Assemb1, adlı bir derleme aynı ad için ek sınıfları tanımlamak ve Assemb2.

Tam adları

Nesne tanımlı ad alanının adı öneki nesne başvurularını tam adlarıdır.Sınıfının bir başvurusunu oluşturursanız, başka projelerde tanımlanan nesneleri kullanabilirsiniz (seçerek Add Reference dan Proje menüsü) ve nesnenin tam adı kodunuzda kullanın.Aşağıdaki kod parçası tam adı başka bir projenin ad alanından bir nesne için nasıl gösterir:

Dim LBC As New ListBoxProject.Form1.ListBox

Tam adlarını engellemek adlandırma derleyici hangi nesnenin kullanıldığını belirlemek olası olun çünkü çakışıyor.Ancak, adları, uzun ve hantal elde edebilirsiniz.Bunu çözmek için kullanabileceğiniz Imports ifadesi tanımlamak için bir diğer— tam adı yerine kullanabileceğiniz bir kısaltılmış adı.Örneğin, aşağıdaki kod örneği, iki tam adlar için diğer ad oluşturur ve bu diğer adlar iki nesneleri tanımlamak için kullanılır.

Imports LBControl = System.Windows.Forms.ListBox
Imports MyListBox = ListBoxProject.Form1.ListBox
Dim LBC As LBControl
Dim MyLB As MyListBox

Kullanırsanız, Imports deyimi diğer adı, proje için benzersiz olmaları bakımından, ad alanı niteliği olmayan sağlanan tüm adları kullanabilirsiniz.Projeniz varsa Imports deyimleri aynı ada sahip bir öğe içeren ad alanları için gerekir tam olarak nitelemek ada, kullandığınızda.Örneğin, aşağıdaki iki projeniz bulunan varsayalım Imports deyimleri:

' This namespace contains a class called Class1. 
Imports MyProj1
' This namespace also contains a class called Class1. 
Imports MyProj2

Kullanmayı denerseniz, Class1 , tam olarak nitelemek olmadan Visual Basic adı belirten bir hata üretir Class1 belirsiz.

Ad alanı düzeyinde ifadeleri

Bir ad alanı içinde modülleri, arabirimleri, sınıflar, temsilciler, numaralandırma, yapıları ve diğer ad alanları gibi öğeler tanımlayabilirsiniz.Özellikler, yordamlar, değişkenleri ve ad alanı düzeyinde olayları gibi öğeleri tanımlayamazsınız.Bu öğeleri, modüller, yapıları veya sınıflar gibi kapsayıcı içinde bildirilmelidir.

Tam adları genel anahtar sözcük

Ad alanları, iç içe geçmiş bir hiyerarşi tanımladıysanız, bu hiyerarşi içinde kod erişimini engellenebilir System ad.net Framework.Hiyerarşik olarak, aşağıdaki örnekte gösterilmektedir SpecialSpace.System ad bloklar erişmek için System.

Namespace SpecialSpace
    Namespace System
        Class abc
            Function getValue() As System.Int32
                Dim n As System.Int32
                Return n
            End Function
        End Class
    End Namespace
End Namespace

Sonuç olarak, Visual Basic Derleyicisi referansı başarıyla çözümlenemiyor Int32, çünkü SpecialSpace.System tanımlamak değil Int32.Kullanabileceğiniz Global en dıştaki düzeyinde niteliği zinciri başlatmak için anahtar sözcük.net Framework sınıf kitaplığı.Bu sayede belirtmek System ad alanı veya herhangi bir diğer ad sınıfı Kitaplığı'nda.Aşağıdaki örnek bunu göstermektedir.

Namespace SpecialSpace
    Namespace System
        Class abc
            Function getValue() As Global.System.Int32
                Dim n As Global.System.Int32
                Return n
            End Function
        End Class
    End Namespace
End Namespace

Kullanabileceğiniz Global gibi diğer kök düzeyinde ad erişmek için Microsoft.VisualBasicve projeniz ile ilgili herhangi bir ad boşluğu.

Ad alanı ifadelerine genel anahtar sözcük

Ayrıca Global anahtar sözcük bulunan bir Namespace Deyimi.Bu, projenizin kök ad alanı dışında bir ad alanını tanımlama sağlar.

Projenizdeki tüm ad alanları proje kök ad alanını temel alır.Visual Studio proje adınızı projenizdeki tüm kodu için varsayılan kök ad olarak atar.Örneğin, projenizin adlı ConsoleApplication1, programlama öğeleri ad alanına ait ConsoleApplication1.Bildirirseniz Namespace Magnetosphere, için başvuran Magnetosphere projeye erişim sağlayacak ConsoleApplication1.Magnetosphere.

Aşağıdaki örnekler Global projenin kök ad alanı dışında bir ad alaný bildirmek için anahtar sözcük.

Namespace Global.Magnetosphere

End Namespace 


Namespace Global 
    Namespace Magnetosphere

    End Namespace 
End Namespace

Bir ad alaný bildirimi, Global başka bir ad alanına yerleştirilemez.

Kullanabileceğiniz Uygulama Sayfası, Proje Tasarımcısı (Visual Basic) görüntülemek ve değiştirmek için Kök ad proje.Yeni projeler için Kök ad proje adı varsayılan değeri.Neden Global en üst düzey ad olacak şekilde, temizleyebilirsiniz Kök ad giriş kutusunun boş olduğundan emin.Temizleme Kök ad gereksinimini ortadan kaldırır Global ad alanı bildirimi bir anahtar sözcük.

Yoksa bir Namespace ifade, aynı zamanda bir ad alanında bir ad bildirir.net Framework.net Framework ad kullanılamaz duruma gelir, Global anahtar sözcüğünü tam adı kullanılmaz.Erişim sağlamak için.net Framework ad alanı kullanmadan Global anahtar sözcüğü içerebilir Global bir anahtar sözcük Namespace ifadesi.

Aşağıdaki örnek olan Global bir anahtar sözcük System.Text ad alaný bildirimi.

Global Anahtar ad alanı bildiriminde mevcut değildi StringBuilder belirtmeden erişilemedi Global.System.Text.StringBuilder.Adlı bir proje için ConsoleApplication1, için başvuran System.Text erişmek ConsoleApplication1.System.Text , Global anahtar sözcük kullanılmadığı.

Module Module1
    Sub Main()
        Dim encoding As New System.Text.TitanEncoding

        ' If the namespace defined below is System.Text 
        ' instead of Global.System.Text, then this statement 
        ' causes a compile-time error. 
        Dim sb As New System.Text.StringBuilder
    End Sub 
End Module 

Namespace Global.System.Text
    Class TitanEncoding

    End Class 
End Namespace

Ayrıca bkz.

Görevler

Nasıl yapılır: Komut Satırını Kullanarak Derlemeler Oluşturma ve Kullanma (C# ve Visual Basic)

Başvuru

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

ListBox

System.Windows.Forms

Kavramlar

Derlemeler ve Genel Derleme Önbelleği (C# ve Visual Basic)

References ve Imports Deyimi (Visual Basic)

Office Çözümlerinde Kod Yazma