Perbedaan Antara Konstan dan Hanya Baca

Penting untuk memahami konsep pemrograman C # sebelum Anda melanjutkan dengan mengimplementasikan kode. Sebelum kita beralih ke perbedaan antara const dan readonly, mari kita memahami kata kunci terlebih dahulu dan bagaimana mereka digunakan dalam suatu program. Keduanya adalah kata kunci yang paling umum digunakan dalam pemrograman C # dan pada dasarnya untuk tujuan yang sama. Namun, kedua kata kunci tersebut sangat berbeda satu sama lain. Const adalah kata yang digunakan untuk mewakili nilai konstan dan menetapkan bahwa nilai tidak dapat dimodifikasi setelah waktu kompilasi, sedangkan readonly adalah pengubah yang dapat digunakan pada bidang dan nilai yang dapat diubah selama runtime. Mari kita lihat beberapa perbedaan utama antara const dan readonly.

Apa itu Const?

Konst mengacu pada variabel konstan dan nilai yang perlu ditugaskan hanya sekali, selama deklarasi. Ketika kata kunci const digunakan selama deklarasi, itu menjadi konstanta artinya nilainya tetap konstan dan tidak dapat diubah sepanjang program. Ini lebih dari kata yang dilindungi undang-undang yang menetapkan bahwa nilai tidak boleh dimodifikasi setelah waktu kompilasi. Const secara implisit statis secara default, sehingga dapat dipanggil dengan nama kelas menggunakan "Classname.VariableName". Nilai konstan juga disebut sebagai literal. Ini bisa berupa tipe data dasar seperti integer const, floating const, atau string literal.

Apa itu ReadOnly?

Kata kunci Readonly adalah pengubah yang hanya dapat digunakan di bidang tetapi bukan variabel lokal. Bidang readonly dapat diinisialisasi baik pada saat deklarasi atau di dalam konstruktor di kelas yang sama, sehingga nilainya dapat berbeda untuk eksekusi program yang berbeda tergantung pada konstruktor yang digunakan. Kata kunci yang hanya dibaca menentukan bahwa variabel instance objek tidak dapat dimodifikasi dan setiap upaya untuk memodifikasinya setelah deklarasi menghasilkan kesalahan kompilasi. Variabel tidak menjadi tidak dapat dimodifikasi sampai setelah eksekusi. Variabel dibuat hanya dibaca untuk berhenti memanggil kode dari memodifikasi secara tidak sengaja setelah itu dibangun.

Perbedaan antara Constant dan ReadOnly

  1. Dasar

Konstan (const) kata kunci tidak lain adalah variabel yang tidak dapat diubah yang nilainya hanya dapat diinisialisasi pada waktu kompilasi. Nilai-nilai konstan ini juga disebut sebagai literal. Ini hanya memungkinkan kita untuk menentukan apakah suatu variabel dapat dimodifikasi atau tidak. Secara sederhana, konstanta secara implisit statis dan harus diinisialisasi sebelum digunakan dalam program. Kata kunci hanya baca, di sisi lain, adalah pengubah yang dapat digunakan pada bidang dan nilainya dapat diubah selama runtime. Ini mencegah bidang tidak diubah dan nilai-nilai yang dapat diatur melalui variabel referensi.

  1. Inisialisasi

Const adalah statis secara default dan nilai-nilai yang harus ditetapkan pada saat deklarasi variabel yang berarti nilai ditugaskan hanya pada waktu kompilasi. Konstanta dideklarasikan menggunakan kata kunci “const”. Inisialisasi bidang konstan harus berupa ekspresi konstan dan tidak boleh dimodifikasi. Sederhananya, sebuah konst adalah konstanta waktu kompilasi. Bidang readonly, di sisi lain, hanya dapat diinisialisasi di tingkat kelas tidak di dalam metode dan bidang tidak dapat dimodifikasi setelah inisialisasi. Dengan kata lain, variabel readonly dapat diinisialisasi pada saat deklarasi atau di dalam konstruktor.

  1. Alokasi memori

Nilai const dimasukkan langsung ke dalam kode karena berfungsi sebagai pengganti waktu kompilasi. Compiler menempatkan nilai konstan dalam metadata rakitan yang mendefinisikan konstanta dan menanamkan nilai dalam kode IL itu sendiri setelah inisialisasi, jadi tidak ada memori yang diperlukan untuk konstanta pada saat runtime untuk alokasi. Nilai hanya baca tidak konstan dan disimpan dalam loader menumpuk memori yang tidak dapat dialokasikan sampai jenisnya dimuat. Bidang baca hanya disimpan dalam memori dinamis sehingga nilai hanya dapat diperoleh saat runtime.

  1. Versi Biner

Meskipun kedua kata kunci tersebut digunakan hampir untuk tujuan yang sama, mereka memiliki semantik versi biner yang berbeda. Ketika ekspresi merujuk konstanta, kompiler menanamkan nilai pada waktu kompilasi. Jadi, jika nilai digunakan dalam rakitan yang berbeda, rakitan yang asli perlu diperbarui dan nilainya harus diubah. Perubahan dalam majelis tidak tercermin sampai disusun kembali. Nilai tidak diperoleh sampai runtime ketika ekspresi merujuk bidang yang hanya dibaca. Jika nilai diubah dalam rakitan yang berbeda, perubahan akan tercermin dalam rakitan segera setelah dimuat tanpa perlu mengkompilasi ulang.

Const vs. Readonly: Chart Perbandingan

Ringkasan Const vs. Readonly

Kedua kata kunci tersebut digunakan untuk hal yang sama yaitu mendeklarasikan anggota sehingga nilainya tidak dapat diubah sepanjang program. Namun, kata kunci const sangat berbeda dari kata kunci readonly. Const adalah variabel konstan yang nilainya harus diinisialisasi pada waktu kompilasi, sedangkan bidang baca hanya dapat diinisialisasi di tingkat kelas, baik pada saat deklarasi atau di dalam konstruktor. Const adalah konstanta waktu kompilasi sedangkan bidang hanya baca hanya baca. Variabel Constance dapat diakses menggunakan "Classname.VariableName" sementara variabel readonly dapat diakses menggunakan "InstanceName.VariableName". Selain itu, variabel const dapat dideklarasikan dalam metode, sedangkan bidang readonly tidak dapat dideklarasikan dalam metode.