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.
Anda dapat menyembunyikan variabel dengan membayanginya , yaitu dengan mendefinisikannya kembali dengan variabel dengan nama yang sama. Anda dapat menyembunyikan variabel yang ingin Anda sembunyikan dengan dua cara:
Penutupan Melalui Ruang Lingkup. Anda dapat membayangi variabel tersebut melalui ruang lingkup dengan mendeklarasikannya kembali di dalam bagian wilayah tempat variabel yang ingin Anda sembunyikan.
Pengamatan melalui proses warisan. Jika variabel yang ingin Anda sembunyikan didefinisikan pada tingkat kelas, Anda dapat membayanginya melalui pewarisan dengan mendeklarasikannya kembali dengan kata kunci Bayangan di kelas turunan.
Dua Cara untuk Menyembunyikan Variabel
Untuk menyembunyikan variabel dengan membayanginya melalui batasan cakupan
Tentukan wilayah yang menentukan variabel yang ingin Anda sembunyikan, dan tentukan subregion untuk menentukan ulang dengan variabel Anda.
Wilayah variabel Subregion yang diperbolehkan untuk mendefinisikan ulang Modul Kelas dalam modul Kelas Subkelas dalam kelas
Prosedur dalam kelasAnda tidak dapat mendefinisikan ulang variabel prosedur dalam satu blok di dalam prosedur tersebut, misalnya dalam konstruksi
If...End Ifatau perulanganFor.Buat subregion jika belum ada.
Dalam subregion, tulis Pernyataan Dim yang mendeklarasikan variabel bayangan.
Ketika kode di dalam subregion mengacu pada nama variabel, pengkompilasi menyelesaikan referensi ke variabel bayangan.
Contoh berikut mengilustrasikan bayangan melalui cakupan, serta referensi yang melewati bayangan.
Module shadowByScope ' The following statement declares num as a module-level variable. Public num As Integer Sub show() ' The following statement declares num as a local variable. Dim num As Integer ' The following statement sets the value of the local variable. num = 2 ' The following statement displays the module-level variable. MsgBox(CStr(shadowByScope.num)) End Sub Sub useModuleLevelNum() ' The following statement sets the value of the module-level variable. num = 1 show() End Sub End ModuleContoh sebelumnya mendeklarasikan variabel
numbaik pada tingkat modul maupun pada tingkat prosedur (dalam prosedurshow). Variabel lokalnummengaburkan variabelnumtingkat modul dalamshow, sehingga variabel lokal diatur menjadi 2. Namun, tidak ada variabel lokal untuk membayanginumdalam proseduruseModuleLevelNum. Oleh karena itu,useModuleLevelNummengatur nilai variabel tingkat modul ke 1.Panggilan
MsgBoxdi dalamshowmelewati mekanisme bayangan dengan menentukannummenggunakan nama modul. Oleh karena itu, ini menampilkan variabel tingkat modul alih-alih variabel lokal.
Untuk menyembunyikan variabel dengan menutupi melalui pewarisan
Pastikan variabel yang ingin Anda sembunyikan dideklarasikan dalam kelas, dan pada tingkat kelas (di luar prosedur apa pun). Jika tidak, Anda tidak dapat mengikutinya melalui pewarisan.
Tentukan kelas yang berasal dari kelas variabel jika belum ada.
Di dalam kelas turunan, tulis pernyataan yang
Dimmenyatakan variabel Anda. Sertakan kata kunci Bayangan dalam deklarasi.Ketika kode di kelas turunan mengacu pada nama variabel, pengkompilasi menyelesaikan referensi ke variabel Anda.
Contoh berikut mengilustrasikan bayangan melalui pewarisan. Ini membuat dua referensi, satu yang mengakses variabel bayangan dan satu yang melewati bayangan.
Public Class shadowBaseClass Public shadowString As String = "This is the base class string." End Class Public Class shadowDerivedClass Inherits shadowBaseClass Public Shadows shadowString As String = "This is the derived class string." Public Sub showStrings() Dim s As String = "Unqualified shadowString: " & shadowString & vbCrLf & "MyBase.shadowString: " & MyBase.shadowString MsgBox(s) End Sub End ClassContoh sebelumnya mendeklarasikan variabel
shadowStringdi kelas dasar dan membayanginya di kelas turunan. ProsedurshowStringsdi kelas turunan menampilkan versi bayangan string ketika namashadowStringtidak memenuhi syarat. Kemudian menampilkan versi bayangan ketikashadowStringmemenuhi syarat denganMyBasekata kunci.
Pemrograman yang Kuat
Shadowing memperkenalkan lebih dari satu versi variabel dengan nama yang sama. Ketika pernyataan kode mengacu pada nama variabel, versi tempat pengkompilasi menyelesaikan referensi tergantung pada faktor-faktor seperti lokasi pernyataan kode dan keberadaan string yang memenuhi syarat. Ini dapat meningkatkan risiko merujuk pada versi yang tidak diinginkan dari variabel yang tertutupi. Anda dapat menurunkan risiko tersebut dengan sepenuhnya memenuhi syarat semua referensi ke variabel yang di bayangan.