Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Namespace mengorganisir objek yang didefinisikan dalam assembly. Rakitan dapat berisi beberapa namespace, yang pada gilirannya dapat berisi namespace lain. Namespace mencegah ambiguitas dan menyederhanakan referensi saat menggunakan grup besar objek seperti pustaka kelas.
Misalnya, .NET Framework mendefinisikan ListBox kelas di System.Windows.Forms namespace. Fragmen kode berikut menunjukkan cara mendeklarasikan variabel menggunakan nama yang sepenuhnya memenuhi syarat untuk kelas ini:
Dim LBox As System.Windows.Forms.ListBox
Menghindari Tabrakan Nama
Namespace .NET Framework mengatasi masalah yang terkadang disebut polusi namespace, di mana pengembang pustaka kelas terhambat oleh penggunaan nama yang serupa di pustaka lain. Konflik ini dengan komponen yang ada terkadang disebut benturan nama.
Misalnya, jika Anda membuat kelas baru bernama ListBox
, Anda dapat menggunakannya di dalam proyek Anda tanpa kualifikasi. Namun, jika Anda ingin menggunakan kelas .NET Framework ListBox dalam proyek yang sama, Anda harus menggunakan referensi yang sepenuhnya memenuhi syarat untuk membuat referensi unik. Jika referensi tidak unik, Visual Basic menghasilkan kesalahan yang menyatakan bahwa namanya ambigu. Contoh kode berikut menunjukkan cara mendeklarasikan objek ini:
' 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
Ilustrasi berikut menunjukkan dua hierarki namespace, keduanya berisi objek bernama ListBox
:
Secara default, setiap file yang dapat dieksekusi yang Anda buat dengan Visual Basic berisi namespace dengan nama yang sama dengan proyek Anda. Misalnya, jika Anda menentukan objek dalam proyek bernama ListBoxProject
, file yang dapat dieksekusi ListBoxProject.exe berisi namespace yang disebut ListBoxProject
.
Beberapa rakitan dapat menggunakan namespace yang sama. Visual Basic memperlakukannya sebagai satu set nama. Misalnya, Anda dapat menentukan kelas untuk namespace yang disebut SomeNameSpace
dalam rakitan bernama Assemb1
, dan menentukan kelas tambahan untuk namespace yang sama dari rakitan bernama Assemb2
.
Nama yang Sepenuhnya Memenuhi Syarat
Nama yang sepenuhnya memenuhi syarat adalah referensi objek yang diawali dengan nama namespace tempat objek ditentukan. Anda dapat menggunakan objek yang ditentukan dalam proyek lain jika Anda membuat referensi ke kelas (dengan memilih Tambahkan Referensi dari menu Proyek ) lalu menggunakan nama yang sepenuhnya memenuhi syarat untuk objek dalam kode Anda. Fragmen kode berikut menunjukkan cara menggunakan nama yang sepenuhnya memenuhi syarat untuk objek dari namespace proyek lain:
Dim LBC As New ListBoxProject.Form1.ListBox
Nama yang sepenuhnya memenuhi syarat mencegah konflik penamaan karena memungkinkan pengkompilasi menentukan objek mana yang digunakan. Namun, nama-nama itu sendiri bisa menjadi panjang dan rumit. Untuk mengatasi hal ini, Anda dapat menggunakan Imports
pernyataan untuk menentukan alias—nama singkatan yang dapat Anda gunakan sebagai pengganti nama yang sepenuhnya memenuhi syarat. Misalnya, contoh kode berikut membuat alias untuk dua nama yang sepenuhnya memenuhi syarat, dan menggunakan alias ini untuk menentukan dua objek.
Imports LBControl = System.Windows.Forms.ListBox
Imports MyListBox = ListBoxProject.Form1.ListBox
Dim LBC As LBControl
Dim MyLB As MyListBox
Jika Anda menggunakan pernyataan Imports
tanpa alias, Anda dapat menggunakan semua nama di namespace tersebut tanpa penjelasan tambahan, asalkan unik untuk proyek. Jika proyek Anda berisi Imports
pernyataan untuk namespace yang berisi item dengan nama yang sama, Anda harus sepenuhnya memenuhi syarat nama tersebut saat menggunakannya. Misalkan, misalnya, proyek Anda berisi dua Imports
pernyataan berikut:
' This namespace contains a class called Class1.
Imports MyProj1
' This namespace also contains a class called Class1.
Imports MyProj2
Jika Anda mencoba menggunakan Class1
tanpa sepenuhnya memenuhi syarat, Visual Basic menghasilkan kesalahan yang menyatakan bahwa namanya Class1
ambigu.
Pernyataan Tingkat Namespace
Dalam namespace, Anda dapat menentukan item seperti modul, antarmuka, kelas, delegasi, enumerasi, struktur, dan namespace lainnya. Anda tidak dapat menentukan item seperti properti, prosedur, variabel, dan peristiwa di tingkat namespace. Item ini harus dideklarasikan dalam kontainer seperti modul, struktur, atau kelas.
Kata Kunci Global dalam Nama yang Sepenuhnya Memenuhi Syarat
Jika Anda telah menentukan hierarki namespace berlapis, kode di dalam hierarki tersebut System mungkin diblokir agar tidak mengakses namespace .NET Framework. Contoh berikut mengilustrasikan hierarki di mana SpecialSpace.System
namespace memblokir akses ke 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
Akibatnya, pengkompilasi Visual Basic tidak dapat berhasil mengatasi referensi ke System.Int32, karena SpecialSpace.System
tidak menentukan Int32
. Anda dapat menggunakan kata kunci Global
untuk memulai rantai kualifikasi pada tingkat terluar dari pustaka kelas .NET Framework. Ini memungkinkan Anda menentukan System namespace atau namespace lainnya di pustaka kelas. Contoh berikut mengilustrasikan hal ini.
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
Anda dapat menggunakan Global
untuk mengakses namespace layanan tingkat akar lainnya, seperti Microsoft.VisualBasic, dan namespace apa pun yang terkait dengan proyek Anda.
Kata Kunci Global dalam Pernyataan Namespace
Anda juga dapat menggunakan Global
kata kunci dalam Pernyataan Namespace. Ini memungkinkan Anda menentukan namespace di luar namespace akar proyek Anda.
Semua namespace dalam proyek Anda didasarkan pada namespace induk untuk proyek. Visual Studio menetapkan nama proyek Anda sebagai ruang nama akar default untuk semua kode dalam proyek Anda. Misalnya, jika proyek Anda diberi nama ConsoleApplication1
, elemen pemrogramannya milik namespace ConsoleApplication1
. Jika Anda mendeklarasikan Namespace Magnetosphere
, referensi ke Magnetosphere
dalam proyek akan mengakses ConsoleApplication1.Magnetosphere
.
Contoh berikut menggunakan kata kunci Global
untuk mendeklarasikan namespace di luar namespace akar proyek.
Namespace Global.Magnetosphere
End Namespace
Namespace Global
Namespace Magnetosphere
End Namespace
End Namespace
Dalam deklarasi namespace, Global
tidak dapat disematkan di namespace lain.
Anda dapat menggunakan Halaman Aplikasi, Perancang Proyek (Visual Basic) untuk melihat dan memodifikasi Ruang Nama Akar proyek. Untuk proyek baru, Ruang Nama Root secara otomatis akan menjadi nama proyek. Untuk membuat Global
menjadi namespace tingkat atas, Anda dapat menghapus entri Root Namespace sehingga kotaknya kosong. Menghapus Namespace Akar menghilangkan kebutuhan akan kata kunci Global
dalam deklarasi namespace.
Namespace
Jika pernyataan mendeklarasikan nama yang juga merupakan namespace dalam .NET Framework, namespace .NET Framework menjadi tidak tersedia jika kata kunci Global
tidak digunakan dalam nama yang disebutkan secara lengkap. Untuk mengaktifkan akses ke namespace .NET Framework tanpa menggunakan kata kunci Global
, Anda bisa menyertakan kata kunci Global
dalam pernyataan Namespace
.
Contoh berikut memiliki Global
kata kunci dalam System.Text
deklarasi namespace.
Global
Jika kata kunci tidak ada dalam deklarasi namespace, StringBuilder tidak dapat diakses tanpa menentukan Global.System.Text.StringBuilder
. Untuk proyek bernama ConsoleApplication1
, referensi System.Text
akan mengakses ConsoleApplication1.System.Text
jika Global
kata kunci tidak digunakan.
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
Lihat juga
- ListBox
- System.Windows.Forms
- Rakitan dalam .NET
- Referensi dan Pernyataan Impor
- Pernyataan Impor (.NET Namespace dan Tipe)
- Menulis Kode pada Solusi Office