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.
Cakupan elemen yang dideklarasikan adalah sekumpulan semua kode yang dapat merujuknya tanpa memenuhi syarat namanya atau membuatnya tersedia melalui Pernyataan Impor (Namespace dan Jenis.NET). Elemen dapat memiliki cakupan di salah satu tingkat berikut:
| Tingkat | Deskripsi |
|---|---|
| Cakupan blok | Hanya tersedia dalam blok kode tempat kode dideklarasikan |
| Cakupan prosedur | Tersedia untuk semua kode dalam prosedur di mana ia dinyatakan |
| Cakupan modul | Tersedia untuk semua kode dalam modul, kelas, atau struktur tempat kode dideklarasikan |
| Cakupan namespace | Tersedia untuk semua kode di namespace tempat kode dideklarasikan |
Tingkat kemajuan cakupan ini dari tersempit (blok) ke yang terluas (namespace), di mana cakupan tersempit berarti kumpulan kode terkecil yang dapat merujuk ke elemen tanpa kualifikasi. Untuk informasi selengkapnya, lihat "Tingkat Cakupan" di halaman ini.
Menentukan Cakupan dan Menentukan Variabel
Anda menentukan cakupan elemen saat anda mendeklarasikannya. Cakupan dapat bergantung pada faktor-faktor berikut:
Wilayah (blok, prosedur, modul, kelas, atau struktur) tempat Anda mendeklarasikan elemen
Namespace yang berisi deklarasi elemen
Tingkat akses yang Anda deklarasikan untuk elemen
Berhati-hatilah saat Anda mendefinisikan variabel dengan nama yang sama tetapi cakupan yang berbeda, karena melakukannya dapat menyebabkan hasil yang tidak terduga. Untuk informasi selengkapnya, lihat Referensi ke Elemen yang Dideklarasikan.
Tingkat Cakupan
Elemen pemrograman tersedia di seluruh wilayah tempat Anda mendeklarasikannya. Semua kode di wilayah yang sama dapat merujuk ke elemen tanpa memenuhi syarat namanya.
Cakupan Pembatasan Blok
Blok adalah sekumpulan kalimat yang dikelilingi oleh pernyataan deklarasi awal dan akhir, seperti berikut:
DodanLoopFor[Each] danNextIfdanEnd IfSelectdanEnd SelectSyncLockdanEnd SyncLockTrydanEnd TryWhiledanEnd WhileWithdanEnd With
Jika Anda mendeklarasikan variabel dalam blok, Anda hanya dapat menggunakannya dalam blok tersebut. Dalam contoh berikut, cakupan variabel bilangan bulat cube adalah blok antara If dan End If, dan Anda tidak dapat lagi merujuk ke cube setelah eksekusi keluar dari blok tersebut.
If n < 1291 Then
Dim cube As Integer
cube = n ^ 3
End If
Nota
Bahkan jika cakupan variabel terbatas pada blok, masa pakainya tetap berlangsung selama seluruh prosedur. Jika Anda memasukkan blok lebih dari sekali selama prosedur, setiap variabel blok mempertahankan nilai sebelumnya. Untuk menghindari hasil yang tidak terduga dalam kasus seperti itu, adalah bijaksana untuk menginisialisasi variabel blok di awal blok.
Cakupan Prosedur
Elemen yang dinyatakan dalam prosedur tidak tersedia di luar prosedur tersebut. Hanya prosedur yang berisi deklarasi yang dapat menggunakannya. Variabel pada tingkat ini juga dikenal sebagai variabel lokal. Anda mendeklarasikannya dengan Pernyataan Dim, dengan atau tanpa kata kunci Statis .
Prosedur dan cakupan blok terkait erat. Jika Anda mendeklarasikan variabel di dalam prosedur tetapi di luar blok apa pun dalam prosedur itu, Anda dapat menganggap variabel memiliki cakupan blok, di mana blok adalah seluruh prosedur.
Nota
Semua elemen lokal, bahkan jika mereka adalah Static variabel, bersifat pribadi untuk prosedur di mana elemen tersebut muncul. Anda tidak dapat mendeklarasikan elemen apa pun menggunakan kata kunci Publik dalam prosedur.
Cakupan Modul
Untuk kenyamanan, istilah tunggal tingkat modul berlaku sama untuk modul, kelas, dan struktur. Anda dapat mendeklarasikan elemen pada tingkat ini dengan menempatkan pernyataan deklarasi di luar prosedur atau blok apa pun tetapi dalam modul, kelas, atau struktur.
Saat Anda membuat deklarasi di tingkat modul, tingkat akses yang Anda pilih menentukan cakupan. Namespace yang berisi modul, kelas, atau struktur juga memengaruhi cakupan.
Elemen yang Anda deklarasikan Tingkat akses privat tersedia untuk setiap prosedur dalam modul tersebut, tetapi tidak untuk kode apa pun dalam modul yang berbeda. Pernyataan Dim pada tingkat lembaga menjadi Private secara default jika Anda tidak menggunakan kata kunci tingkat akses apa pun. Namun, Anda dapat membuat cakupan dan tingkat akses lebih jelas dengan menggunakan Private kata kunci dalam Dim pernyataan.
Dalam contoh berikut, semua prosedur yang ditentukan dalam modul dapat merujuk ke variabel strMsgstring . Ketika prosedur kedua dipanggil, prosedur tersebut menampilkan konten variabel strMsg string dalam kotak dialog.
' Put the following declaration at module level (not in any procedure).
Private strMsg As String
' Put the following Sub procedure in the same module.
Sub initializePrivateVariable()
strMsg = "This variable cannot be used outside this module."
End Sub
' Put the following Sub procedure in the same module.
Sub usePrivateVariable()
MsgBox(strMsg)
End Sub
Ruang Lingkup Namespace
Jika Anda mendeklarasikan elemen pada tingkat modul menggunakan kata kunci Teman atau Publik , elemen tersebut akan tersedia untuk semua prosedur di seluruh namespace tempat elemen dideklarasikan. Dengan perubahan berikut ke contoh sebelumnya, variabel strMsg string dapat dirujuk oleh kode di mana saja di namespace deklarasinya.
' Include this declaration at module level (not inside any procedure).
Public strMsg As String
Cakupan namespace menyertakan namespace berlapis. Elemen yang tersedia dari dalam sebuah namespace juga tersedia dari dalam namespace mana pun yang bersarang di dalamnya.
Jika proyek Anda tidak berisi Pernyataan Namespaceapa pun, semua yang ada dalam proyek berada di namespace yang sama. Dalam hal ini, cakupan namespace dapat dianggap sebagai cakupan proyek.
Public elemen dalam modul, kelas, atau struktur juga tersedia untuk proyek apa pun yang mereferensikan proyek mereka.
Pilihan Cakupan
Saat Anda mendeklarasikan variabel, Anda harus mengingat poin-poin berikut saat memilih cakupannya.
Keuntungan Variabel Lokal
Variabel lokal adalah pilihan yang baik untuk segala jenis perhitungan sementara, karena alasan berikut:
Penghindarian Konflik Nama. Nama variabel lokal tidak rentan terhadap konflik. Misalnya, Anda dapat membuat beberapa prosedur berbeda yang berisi variabel yang disebut
intTemp. Selama masing-masingintTempdinyatakan sebagai variabel lokal, setiap prosedur hanya mengenali versinya sendiri dariintTemp. Setiap prosedur dapat mengubah nilai dalam lokalnyaintTemptanpa memengaruhiintTempvariabel dalam prosedur lain.Penggunaan Memori. Variabel lokal hanya menggunakan memori saat prosedurnya berjalan. Penggunaan memori mereka dihentikan ketika prosedur kembali ke kode yang memanggil. Sebaliknya, variabel Bersama dan Statis mengonsumsi sumber daya memori hingga aplikasi Anda berhenti berjalan, jadi gunakan hanya jika diperlukan. Variabel instans mengonsumsi memori saat instansnya terus ada, yang membuatnya kurang efisien daripada variabel lokal, tetapi berpotensi lebih efisien daripada
SharedatauStaticvariabel.
Meminimalkan Cakupan
Secara umum, ketika mendeklarasikan variabel atau konstanta apa pun, adalah praktik pemrograman yang baik untuk membuat cakupan sesempit mungkin (cakupan blok adalah yang paling sempit). Ini membantu menghemat memori dan meminimalkan kemungkinan kode Anda salah merujuk ke variabel yang salah. Demikian pula, Anda harus mendeklarasikan variabel menjadi Statis hanya ketika perlu untuk mempertahankan nilainya di antara panggilan prosedur.