Bagikan melalui


ReadOnly (Visual Basic)

Menentukan bahwa variabel atau properti dapat dibaca tetapi tidak ditulis.

Komentar

Aturan

  • Konteks Deklarasi. Anda hanya dapat menggunakan ReadOnly pada tingkat modul. Ini berarti konteks deklarasi untuk ReadOnly elemen harus merupakan kelas, struktur, atau modul, dan tidak dapat menjadi file sumber, namespace, atau prosedur.

  • Pengubah Gabungan. Anda tidak dapat menentukan ReadOnly bersama-sama dengan Static dalam deklarasi yang sama.

  • Menetapkan Nilai. Kode yang ReadOnly menggunakan properti tidak dapat mengatur nilainya. Tetapi kode yang memiliki akses ke penyimpanan yang mendasar dapat menetapkan atau mengubah nilai kapan saja.

    Anda dapat menetapkan nilai ke ReadOnly variabel hanya dalam deklarasinya atau di konstruktor kelas atau struktur tempatnya ditentukan.

Kapan Menggunakan Variabel ReadOnly

Ada situasi di mana Anda tidak dapat menggunakan Pernyataan Const untuk mendeklarasikan dan menetapkan nilai konstanta. Misalnya, Const pernyataan mungkin tidak menerima jenis data yang ingin Anda tetapkan, atau Anda mungkin tidak dapat menghitung nilai pada waktu kompilasi dengan ekspresi konstanta. Anda bahkan mungkin tidak tahu nilainya pada waktu kompilasi. Dalam kasus ini, Anda dapat menggunakan ReadOnly variabel untuk menyimpan nilai konstanta.

Penting

Jika jenis data variabel adalah jenis referensi, seperti array atau instans kelas, anggotanya dapat diubah bahkan jika variabel itu sendiri adalah ReadOnly. Contoh berikut mengilustrasikan hal ini.

ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub ChangeArrayElement()
    characterArray(1) = "M"c
End Sub

Saat diinisialisasi, array menunjuk ke dengan characterArray() menahan "x", "y", dan "z". Karena variabelnya characterArray adalah ReadOnly, Anda tidak dapat mengubah nilainya setelah diinisialisasi; artinya, Anda tidak dapat menetapkan array baru ke dalamnya. Namun, Anda dapat mengubah nilai satu atau beberapa anggota array. Mengikuti panggilan ke prosedur ChangeArrayElement, array yang ditunjukkan dengan characterArray() menahan "x", "M", dan "z".

Perhatikan bahwa ini mirip dengan mendeklarasikan parameter prosedur menjadi ByVal, yang mencegah prosedur mengubah argumen panggilan itu sendiri tetapi memungkinkannya untuk mengubah anggotanya.

Contoh

Contoh berikut menentukan ReadOnly properti untuk tanggal karyawan dipekerjakan. Kelas menyimpan nilai properti secara internal sebagai Private variabel, dan hanya kode di dalam kelas yang dapat mengubah nilai tersebut. Namun, properti adalah Public, dan kode apa pun yang dapat mengakses kelas dapat 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