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.
Halaman ini mencantumkan beberapa masalah umum yang dapat terjadi saat bekerja dengan variabel di Visual Basic.
Tidak Dapat Mengakses Anggota Objek
Jika kode Anda mencoba mengakses properti atau metode pada objek, ada dua kemungkinan kesalahan yang dihasilkan:
Pengompilasi dapat menghasilkan pesan kesalahan jika Anda mendeklarasikan variabel objek menjadi jenis tertentu lalu merujuk ke anggota yang tidak ditentukan oleh jenis tersebut.
Run-time MemberAccessException terjadi ketika objek yang ditetapkan ke variabel objek tidak mengekspos anggota yang mencoba diakses oleh kode Anda. Dalam kasus variabel Jenis Data Objek, Anda juga bisa mendapatkan pengecualian ini jika anggotanya bukan
Public. Ini karena pengikatan akhir hanya akan memungkinkan akses ke anggotaPublic.
Ketika Pernyataan Ketat Opsi mengatur pemeriksaan jenis On, variabel objek hanya dapat mengakses metode dan properti kelas yang Anda deklarasikan. Contoh berikut mengilustrasikan langkah-langkah ini:
Dim p As Object = New System.Windows.Forms.Label
Dim q As System.Windows.Forms.Label = New System.Windows.Forms.Label
Dim j, k As Integer
' The following statement generates a compiler error.
j = p.Left
' The following statement retrieves the left edge of the label
' in pixels.
k = q.Left
Dalam contoh ini, p hanya dapat menggunakan anggota kelas Object itu sendiri, yang tidak menyertakan properti Left. Di sisi lain, q telah dideklarasikan sebagai jenis Label, sehingga dapat menggunakan semua metode dan properti kelas Label di namespace System.Windows.Forms.
Pendekatan yang Benar
Agar dapat mengakses semua anggota objek dari kelas tertentu, deklarasikan variabel objek menjadi jenis kelas tersebut jika memungkinkan. Jika Anda tidak dapat melakukannya, misalnya jika Anda tidak mengetahui jenis objek pada waktu kompilasi, Anda harus mengatur Option Strict ke Off dan mendeklarasikan variabel menjadi Tipe Data Objek. Ini memungkinkan objek dari jenis apa pun untuk ditetapkan ke variabel, dan Anda harus bertindak untuk memastikan bahwa objek yang saat ini ditetapkan adalah jenis yang dapat diterima. Anda dapat menggunakan Operator TypeOf untuk membuat penentuan ini.
Komponen Lain Tidak Dapat Mengakses Variabel Anda
Nama Visual Basic bersifat peka huruf besar/kecil. Jika dua nama hanya berbeda dalam hal huruf besar/kecilnya, pengompilasi akan menafsirkannya sebagai nama yang sama. Misalnya, pengompilasi akan menganggap ABC dan abc merupakan elemen yang dideklarasikan sama.
Namun, runtime bahasa umum (CLR) menggunakan pengikatan peka huruf besar/kecil. Oleh karena itu, ketika Anda menghasilkan rakitan atau DLL dan menjadikannya tersedia untuk rakitan lain, nama Anda tidak lagi bersifat peka huruf besar/kecil. Misalnya, jika Anda menentukan kelas dengan elemen yang disebut ABC, dan rakitan lainnya memanfaatkan kelas Anda melalui runtime bahasa umum, rakitan lain tersebut harus merujuk ke elemen sebagai ABC. Jika Anda kemudian mengolah ulang kelas dan mengubah nama elemen menjadi abc, rakitan lain yang menggunakan kelas Anda tidak dapat lagi mengakses elemen tersebut. Oleh karena itu, ketika Anda merilis versi rakitan yang diperbarui, Anda tidak boleh mengubah huruf besar/kecil alfabet elemen publik.
Untuk informasi selengkapnya, lihat Runtime Bahasa Umum.
Pendekatan yang Benar
Untuk memungkinkan komponen lain mengakses variabel Anda, perlakukan namanya seolah-olah bersifat peka huruf besar/kecil. Saat menguji kelas atau modul Anda, pastikan rakitan lain mengikat variabel sesuai dengan yang Anda harapkan. Setelah Anda menerbitkan komponen, jangan melakukan modifikasi apa pun pada nama variabel yang ada, termasuk mengubah huruf besar/kecilnya.
Variabel Salah yang Sedang Digunakan
Ketika Anda memiliki lebih dari satu variabel dengan nama yang sama, pengompilasi Visual Basic akan mencoba menyelesaikan setiap referensi ke nama tersebut. Jika variabel memiliki cakupan yang berbeda, pengompilasi akan menyelesaikan referensi ke deklarasi dengan cakupan tersempit. Jika memiliki cakupan yang sama, resolusi akan gagal dan pengompilasi akan memberi sinyal adanya kesalahan. Untuk informasi selengkapnya, lihat Referensi ke Elemen yang Dideklarasikan.
Pendekatan yang Benar
Hindari menggunakan variabel dengan nama yang sama tetapi memiliki cakupan yang berbeda. Jika Anda menggunakan rakitan atau proyek lain, sebisa mungkin, hindari menggunakan nama yang ditentukan dalam komponen eksternal tersebut. Jika Anda memiliki lebih dari satu variabel dengan nama yang sama, pastikan Anda memenuhi syarat setiap referensinya. Untuk informasi selengkapnya, lihat Referensi ke Elemen yang Dideklarasikan.