Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ad alanları, bir derlemede tanımlanan nesneleri düzenler. Derlemeler birden çok ad alanı içerebilir ve bu ad alanları da kendi içinde başka ad alanlarını barındırabilir. Ad alanları belirsizliği önler ve sınıf kitaplıkları gibi büyük nesne grupları kullanılırken başvuruları basitleştirir.
Örneğin, .NET Framework'te ListBox ad alanında System.Windows.Forms sınıfını tanımlar. Aşağıdaki kod parçası, bu sınıf için tam nitelikli adı kullanarak bir değişkenin nasıl bildirileceğini gösterir:
Dim LBox As System.Windows.Forms.ListBox
Ad Çakışmalarını Önleme
.NET Framework ad alanları bazen ad alanı kirliliği olarak adlandırılan ve bir sınıf kitaplığının geliştiricisinin başka bir kitaplıkta benzer adların kullanılmasıyla engellendiği bir sorunu giderir. Var olan bileşenlerle bu çakışmalara bazen ad çakışmaları adı verilir.
Örneğin, adlı ListBox
yeni bir sınıf oluşturursanız, niteleme olmadan projenizin içinde kullanabilirsiniz. Ancak, .NET Framework ListBox sınıfını aynı projede kullanmak istiyorsanız, bu başvuruyu benzersiz kılmak için tam olarak nitelendirilmiş bir başvuru kullanmanız gerekir. Başvuru benzersiz değilse, Visual Basic adın belirsiz olduğunu belirten bir hata oluşturur. Aşağıdaki kod örneği, bu nesnelerin nasıl bildirileceğini gösterir.
' 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
Aşağıdaki çizimde, her ikisi de adlı ListBox
bir nesne içeren iki ad alanı hiyerarşisi gösterilmektedir:
Varsayılan olarak, Visual Basic ile oluşturduğunuz her yürütülebilir dosya projenizle aynı ada sahip bir ad alanı içerir. Örneğin, adlı ListBoxProject
bir proje içinde bir nesne tanımlarsanız, yürütülebilir dosya ListBoxProject.exe adlı ListBoxProject
bir ad alanı içerir.
Birden çok derleme aynı ad alanını kullanabilir. Visual Basic bunları tek bir ad kümesi olarak ele alır. Örneğin, SomeNameSpace
adlı bir ad alanı için Assemb1
adlı bir derlemede sınıflar tanımlayabilir ve Assemb2
adlı bir derlemeden aynı ad alanı için ek sınıflar tanımlayabilirsiniz.
Tam Nitelikli İsimler
Tam adlar, nesnenin tanımlandığı ad alanının adıyla önekli nesne başvurularıdır. Sınıfına başvuru oluşturursanız (Proje menüsünden Başvuru Ekle'yi seçerek) diğer projelerde tanımlanan nesneleri kullanabilir ve ardından kodunuzda nesne için tam adı kullanabilirsiniz. Aşağıdaki kod parçası, başka bir projenin ad alanındaki bir nesne için tam adın nasıl kullanılacağını gösterir:
Dim LBC As New ListBoxProject.Form1.ListBox
Tam adlar, derleyicinin hangi nesnenin kullanıldığını belirlemesini mümkün hale getirmeleri nedeniyle adlandırma çakışmalarını engeller. Ancak, adların kendileri uzun ve hantal olabilir. Bu sorunu çözmek için, Imports
deyimini kullanarak tam ad yerine kullanabileceğiniz kısaltılmış bir isim olan takma ad tanımlayabilirsiniz. Örneğin, aşağıdaki kod örneği iki tam ad için diğer adlar oluşturur ve iki nesne tanımlamak için bu diğer adları kullanır.
Imports LBControl = System.Windows.Forms.ListBox
Imports MyListBox = ListBoxProject.Form1.ListBox
Dim LBC As LBControl
Dim MyLB As MyListBox
Deyimini Imports
bir diğer ad olmadan kullanırsanız, bu ad alanı içindeki tüm adları projeye özgü olmaları koşuluyla niteleme olmadan kullanabilirsiniz. Projeniz, aynı ada sahip öğeler içeren ad alanlarına ait Imports
deyimleri içeriyorsa, kullandığınızda bu adı tam nitelemeniz gerekir. Örneğin, projenizin aşağıdaki iki Imports
deyimi içerdiğini varsayalım:
' This namespace contains a class called Class1.
Imports MyProj1
' This namespace also contains a class called Class1.
Imports MyProj2
Class1
tam olarak tanımlamadan kullanmayı denerseniz, Visual Basic adın Class1
belirsiz olduğunu belirten bir hata oluşturur.
Ad Alanı Düzeyi İfadeler
Bir ad alanı içinde modüller, arabirimler, sınıflar, temsilciler, numaralandırmalar, yapılar ve diğer ad alanları gibi öğeleri tanımlayabilirsiniz. Ad alanı düzeyinde özellikler, yordamlar, değişkenler ve olaylar gibi öğeleri tanımlayamazsınız. Bu öğeler modüller, yapılar veya sınıflar gibi kapsayıcılar içinde bildirilmelidir.
Tam Nitelikli İsimlerde Küresel Anahtar Sözcük
İç içe yerleştirilmiş bir ad alanı hiyerarşisi tanımladıysanız, bu hiyerarşinin içindeki kodun .NET Framework'ün ad alanına erişmesi System engellenebilir. Aşağıdaki örnek, SpecialSpace.System
ad alanının System'e erişimi engellediği bir hiyerarşiyi gösterir.
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, System.Int32 başvurusunu başarıyla çözümleyemiyor, çünkü SpecialSpace.System
, Int32
tanımlamıyor. Niteleme zincirini Global
.NET Framework sınıf kitaplığının en dış düzeyinde başlatmak için anahtar sözcüğünü kullanabilirsiniz. Bu, sınıf kitaplığında ad alanını System veya başka bir ad alanını belirtmenize olanak tanır. Aşağıdaki örnekte bu gösterilmektedir.
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
Diğer kök düzeyindeki ad alanlarına, örneğin Global
, ve projenizle ilişkilendirilmiş herhangi bir ad alanına erişmek için Microsoft.VisualBasic kullanabilirsiniz.
Ad Alanı Bildirimlerinde Global Anahtar Sözcük
Global
anahtar sözcüğünü de kullanabilirsiniz. Bu, projenizin kök ad alanının dışında bir ad alanı tanımlamanızı sağlar.
Projenizdeki tüm ad alanları, projenin kök ad alanını temel alır. Visual Studio, projenizdeki tüm kodlar için proje adınızı varsayılan kök ad alanı olarak atar. Örneğin, projenizin adı ConsoleApplication1
ise, programlama öğeleri ad alanına ConsoleApplication1
aittir.
Namespace Magnetosphere
öğesini bildirirseniz, projedeki başvurular Magnetosphere
ile ConsoleApplication1.Magnetosphere
öğesine erişecektir.
Aşağıdaki örneklerde, proje için kök ad alanının dışında bir ad alanı bildirmek için anahtar sözcüğü kullanılır Global
.
Namespace Global.Magnetosphere
End Namespace
Namespace Global
Namespace Magnetosphere
End Namespace
End Namespace
Ad alanı bildiriminde, Global
başka bir ad alanında iç içe yerleştirilemez.
Projenin Kök Ad Alanını görüntülemek ve değiştirmek için Uygulama Sayfası, Proje Tasarımcısı (Visual Basic) kullanabilirsiniz. Yeni projeler için Kök Ad Alanı varsayılan olarak proje adını kullanır.
Global
ad alanını en üst düzey ad alanı yapmak için, kutunun boş olmasını sağlamak amacıyla Kök Ad Alanı girdisini temizleyebilirsiniz.
Kök Ad Alanı'nın temizlenmesi, ad alanı bildirimlerinde anahtar sözcük gereksinimini Global
ortadan kaldırır.
Bir Namespace
deyimi, .NET Framework'te bir ad alanı olan bir ismi bildiriyorsa ve Global
anahtar sözcüğü tam ad içinde kullanılmıyorsa, .NET Framework ad alanı kullanılamaz duruma gelir. Bu .NET Framework ad alanına Global
anahtar sözcüğünü kullanmadan erişimi etkinleştirmek için, Global
ifadesine Namespace
anahtar sözcüğünü ekleyebilirsiniz.
Aşağıdaki örnekte ad alanı bildiriminde Global
anahtar sözcüğü yer alırSystem.Text
.
Global
anahtar sözcüğü ad alanı bildiriminde yoksa, StringBuilder belirtilmeden Global.System.Text.StringBuilder
erişilemiyordu.
ConsoleApplication1
adlı bir proje için, System.Text
anahtar kelimesi kullanılmadıysa ConsoleApplication1.System.Text
başvuruları Global
öğesine erişebilir.
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