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 elemen ReadOnly 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 dengan Static 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:

Lihat juga