Visual Basic'de Imports anahtar kelimesi, sınıflara ve işlevlere erişimi kolaylaştırmak için ad alanlarını bağlamak için kullanılır ve tüm hiyerarşiyi belirtmek zorunda kalmadan erişim sağlar. Bu, büyük projelerle çalışırken veya üçüncü taraf kütüphaneler kullanırken özellikle önemlidir.
VB'nin erken sürümlerinde, harici sınıfların kullanımı, türün tam yolunu sürekli olarak belirtme gerekliliği nedeniyle zordu. Ad alanlarının ve Imports ifadesinin ortaya çıkmasıyla, geliştiriciler gerekli kütüphane bölümlerini bağlamak için kullanışlı bir yöntem elde ettiler ve bu da çalışmayı hızlandırdı.
İki kütüphanede aynı isimlere sahip türler olduğunda belirsizlik riski ortaya çıkar. Ayrıca, aşırı sayıda Imports ifadesinin kullanılması çatışmalara ve isim çözümleme hatalarına yol açabilir.
Kargaşadan kaçınmak için, Imports alias = Namespace.Type yapısını kullanarak takma adlar kullanılması önerilir; ve çatışma durumunda, kodda türün tam adını açıkça belirtmek gerekir.
Kod örneği:
Imports System.Text Imports txt = System.Text Module Module1 Sub Main() Dim sb As New StringBuilder() txt.StringBuilder 'Takma ad kullanıyoruz End Sub End Module
Anahtar özellikler:
Imports ifadesi bir prosedür veya sınıf içinde yerleştirilebilir mi?
Hayır, Imports ifadesi sadece dosya veya ad alanı seviyesinde geçerlidir, prosedürler, fonksiyonlar veya sınıflar içinde değil. Kod bloğu içinde yer alması derleme hatasına neden olur.
Farklı ad alanlarından aynı türleri takma ad kullanmadan kullanırsak ne olur?
Belirsiz isim çatışması ile bir türe erişmeye çalışırken derleyici hata verecektir: "Type is ambiguous in the namespace". Ya açıkça tam yolu belirtmek ya da takma adlar kullanmak gerekir.
Imports System.Drawing Imports MyProject.Drawing Sub Foo() Dim img As Image ' Belirsizlik hatası Dim sysImg As System.Drawing.Image ' Doğru End Sub
Imports ile kaydedilmemiş bir derlemeden ad alanı bağlanabilir mi?
Hayır, Imports kullanmadan önce derlemenin projeye "Add Reference" ile eklenmiş olması gerekir. Bunu yapmadan derleyici dış ad alanını göremez.
Bir geliştirici, takma ad kullanmadan hem Imports System.Data hem de Imports System.Web.UI.WebControls ekledi. Daha sonra kodda DataTable adıyla bir çatışma ortaya çıktı ve hata nedenini bulmak için çok zaman harcadı.
Artılar:
Eksiler:
Başka bir geliştirici, Imports DBTable = System.Data.DataTable takma adını kullanıyor; bu, ona nesneleri açıkça ayırt etme imkanı sağlıyor, hatta diğer ad alanlarında benzer isimler olsa bile.
Artılar:
Eksiler: