Perbedaan antara konstan dan readonly

Perbedaan antara konstan dan readonly

Penting untuk memahami konsep pemrograman C# sebelum Anda melanjutkan dengan mengimplementasikan kode. Sebelum kita melompat ke perbedaan antara const dan readitly, mari kita pahami 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 sangat berbeda satu sama lain. Const adalah kata yang dipesan yang digunakan untuk mewakili nilai konstan dan menentukan bahwa nilai tidak dapat dimodifikasi setelah waktu kompilasi, sedangkan readonly adalah pengubah yang dapat digunakan pada bidang dan nilainya dapat diubah selama runtime. Mari kita lihat beberapa perbedaan utama antara const dan readonly.

Apa itu const?

Const mengacu pada variabel konstan dan nilai yang perlu ditetapkan hanya sekali, selama deklarasi. Ketika kata kunci const digunakan selama deklarasi, itu menjadi makna konstan, nilainya tetap konstan dan tidak dapat diubah di seluruh program. Ini lebih merupakan kata yang dipesan yang menentukan bahwa nilai tidak boleh dimodifikasi setelah waktu kompilasi. Const secara implisit statis secara default, sehingga dapat dipanggil dengan nama kelas menggunakan "className.Variablename ". Nilai -nilai konstan juga disebut literal. Ini bisa dari tipe data dasar apa pun seperti const integer, const mengambang, atau string literal.

Apa yang hanya dibaca?

Kata kunci readulonly adalah pengubah yang hanya dapat digunakan di bidang tetapi bukan variabel lokal. Bidang yang hanya 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 readule menetapkan bahwa variabel instance suatu objek tidak dapat dimodifikasi dan upaya apa pun untuk memodifikasinya setelah deklarasi menghasilkan kesalahan kompilasi. Variabel tidak menjadi tidak dapat dimodifikasi sampai setelah eksekusi. Variabel dibuat hanya dengan hanya untuk berhenti memanggil kode dari secara tidak sengaja memodifikasinya setelah dibangun.

Perbedaan antara konstan dan readonly

  1. Dasar

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

  1. Inisialisasi

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

  1. Alokasi memori

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

  1. Versi Biner

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

Const vs. Readonly: Bagan Perbandingan

Ringkasan Const VS. Readonly

Kedua kata kunci digunakan untuk hal yang sama yaitu mendeklarasikan anggota sehingga nilai tidak dapat diubah di seluruh program. Namun, kata kunci const sangat berbeda dari kata kunci readonly. Const adalah variabel konstan yang nilai yang harus diinisialisasi pada waktu kompilasi, sedangkan bidang yang hanya dapat diinisialisasi pada tingkat kelas, baik pada saat deklarasi atau di dalam konstruktor. Const adalah konstanta waktu kompilasi sedangkan bidang readlyly adalah baca saja. 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 yang hanya dapat dinyatakan dalam metode.