ReadOnly (Visual Basic)
Menentukan bahwa variabel atau properti bisa dibaca tetapi tidak ditulis.
Keterangan
Aturan
Konteks Deklarasi. Anda dapat menggunakan
ReadOnly
hanya pada tingkat modul. Ini berarti konteks deklarasi untuk elemenReadOnly
harus berupa kelas, struktur, atau modul dan tidak boleh berupa file sumber, namespace layanan, struktur, atau prosedur.Pengubah Gabungan. Anda tidak bisa menentukan
ReadOnly
bersama denganStatic
dalam deklarasi yang sama.Menetapkan Nilai. Kode yang menggunakan properti
ReadOnly
tidak dapat menetapkan nilainya. Tetapi kode yang mempunyai akses ke penyimpanan yang mendasar dapat menetapkan atau mengubah nilai kapan saja.Anda bisa menetapkan nilai ke variabel
ReadOnly
hanya dalam deklarasinya atau di konstruktor kelas atau struktur tempatnya ditentukan.
Kapan Menggunakan Variabel ReadOnly
Ada situasi di mana Anda tidak bisa menggunakan Pernyataan Const untuk mendeklarasikan serta menetapkan nilai konstanta. Misalnya, pernyataan Const
mungkin tidak menerima jenis data yang ingin Anda tetapkan, atau Anda mungkin tidak bisa menghitung nilai pada waktu kompilasi dengan ekspresi konstanta. Anda bahkan mungkin tidak tahu nilainya pada waktu kompilasi. Dalam kasus ini, Anda bisa menggunakan variabel ReadOnly
untuk menyimpan nilai konstanta.
Penting
Jika jenis data variabel adalah jenis referensi, seperti larik atau instans kelas, anggotanya bisa diubah bahkan jika variabel itu sendiri adalah ReadOnly
. Contoh berikut mengilustrasikan langkah-langkah ini:
ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub ChangeArrayElement()
characterArray(1) = "M"c
End Sub
Saat dilakukan inisialisasi, larik menunjuk ke dengan characterArray()
menahan "x", "y", dan "z". Karena variabel characterArray
adalah ReadOnly
, Anda tidak dapat mengubah nilainya setelah dilakukan inisialisasi; yaitu, Anda tidak dapat menetapkan larik baru ke dalamnya. Tetapi, Anda dapat mengubah nilai satu atau beberapa anggota larik. Mengikuti panggilan ke prosedur ChangeArrayElement
, larik yang ditunjukkan dengan characterArray()
menahan "x", "M", serta "z".
Perhatikan bahwa ini mirip dengan mendeklarasikan parameter prosedur menjadi ByVal, yang mencegah prosedur untuk mengubah argumen panggilan itu sendiri tetapi memungkinkannya untuk mengubah anggotanya.
Contoh
Contoh berikut menentukan properti ReadOnly
untuk tanggal karyawan dipekerjakan. Kelas menyimpan nilai properti secara internal sebagai variabel Private
, dan hanya kode di dalam kelas yang bisa mengubah nilai tersebut. Akan tetapi, properti adalah Public
, dan kode apa pun yang bisa mengakses kelas bisa membaca properti.
Class employee
' Only code inside class employee can change the value of hireDateValue.
Private hireDateValue As Date
' Any code that can access class employee can read property dateHired.
Public ReadOnly Property dateHired() As Date
Get
Return hireDateValue
End Get
End Property
End Class
Pengubah ReadOnly
dapat digunakan dalam konteks ini: