Adalah penting untuk memahami konsep pengaturcaraan C # sebelum anda meneruskan dengan melaksanakan kod tersebut. Sebelum kita melompat ke perbezaan antara konstanta dan readonly, mari kita memahami kata kunci terlebih dahulu dan bagaimana ia digunakan dalam suatu program. Kedua-duanya adalah kata kunci yang paling biasa digunakan dalam pengaturcaraan C # dan pada dasarnya untuk tujuan yang sama. Walau bagaimanapun, kedua-dua kata kunci sangat berbeza antara satu sama lain. Const adalah perkataan reserved yang digunakan untuk mewakili nilai malar dan ia menentukan bahawa nilai tidak dapat diubah suai selepas masa kompilasi, sedangkan readonly adalah pengubahsuaian yang boleh digunakan pada bidang dan nilai yang dapat diubah semasa runtime. Mari kita perhatikan beberapa perbezaan utama antara const dan readonly.
Const merujuk kepada pembolehubah malar dan nilai yang perlu diberikan hanya sekali, semasa pengisytiharan. Apabila kunci kata kunci digunakan semasa perisytiharan, ia menjadi makna yang berterusan nilai kekal tetap dan tidak dapat diubah sepanjang program. Ia lebih daripada perkataan reserved yang menyatakan bahawa nilai tidak boleh diubah suai selepas masa kompilasi. A const secara tersirat statik secara lalai, jadi ia boleh dipanggil dengan nama kelas menggunakan "Classname.VariableName". Nilai malar juga dipanggil sebagai literals. Ia boleh dari mana-mana jenis data asas seperti const integer, const floating, atau string literal.
Kata kunci Readonly adalah pengubah suai yang boleh digunakan hanya pada medan tetapi bukan pembolehubah setempat. Medan yang dibaca boleh diinisikan sama ada pada masa perisytiharan atau di dalam pembina dalam kelas yang sama, sehingga nilai-nilai boleh berbeza untuk eksekusi yang berlainan program bergantung pada pembangun yang digunakan. Kata kunci readonly menentukan bahawa pembolehubah contoh sesuatu objek tidak boleh diubah suai dan sebarang cubaan untuk memodifikasinya selepas keputusan deklarasi dalam kesilapan kompilasi. Pemboleh ubah tersebut tidak menjadi tidak dapat diubah suai sehingga selepas pelaksanaannya. Pembolehubah dibuat hanya untuk berhenti memanggil kod dari sengaja mengubahnya selepas ia dibina.
Kata kunci malar (const) adalah apa-apa tetapi pembolehubah tidak berubah yang hanya boleh dimulakan pada masa kompilasi. Nilai tetap ini juga dipanggil sebagai literals. Ia hanya membenarkan kita menentukan sama ada pembolehubah boleh diubah suai atau tidak. Secara ringkas, pemalar adalah statik secara tersirat dan mereka harus dimulakan sebelum mereka digunakan dalam program ini. Kata kunci readonly, sebaliknya, adalah pengubahsuaian yang boleh digunakan pada bidang dan nilai yang dapat diubah semasa runtime. Ia menghalang bidang daripada diubah dan nilai-nilai yang boleh ditetapkan melalui pembolehubah rujukan.
A const statik secara lalai dan nilai-nilai yang perlu diberikan pada masa perisytiharan berubah bermakna nilai-nilai hanya diberikan pada masa kompilasi. Pemalar dinyatakan dengan menggunakan kata kunci "const". Memulakan medan berterusan mestilah ungkapan berterusan dan tidak boleh diubah suai. Ringkasnya, const adalah penyelenggaraan masa kompilasi. Bidang yang dibaca, sebaliknya, hanya boleh diinisialisasi di peringkat kelas tidak di dalam kaedah dan bidang tidak boleh diubah suai selepas inisialisasi. Dalam erti kata lain, pembolehubah pembaca boleh diinisikan pada masa perisytiharan atau di dalam pembina.
Nilai kon ditetakkan terus ke dalam kod kerana ia berfungsi sebagai penggantian masa kompilasi. Pengkompil meletakkan nilai malar dalam metadata pemasangan yang mentakrifkan pemalar dan menanamkan nilai dalam kod IL sendiri selepas permulaan, oleh itu tiada ingatan diperlukan untuk pemalar semasa runtime untuk peruntukan. Nilai readonly tidak tetap dan ia disimpan di timbunan loader memori yang tidak boleh diperuntukkan sehingga jenisnya dimuatkan. Bidang dibaca disimpan dalam memori dinamik sehingga nilai hanya dapat diperoleh pada masa runtime.
Walaupun kedua-dua kata kunci digunakan hampir untuk tujuan yang sama, mereka mempunyai semantik versi binari yang berbeza. Apabila ungkapan merujuk kepada pemalar, pengkompil membenamkan nilai pada masa kompilasi. Jadi jika nilai itu digunakan dalam perhimpunan yang berbeza, perhimpunan asal perlu dikemas kini dan nilai harus diubah. Perubahan dalam perhimpunan tidak dicerminkan sehingga ia dikompilasi semula. Nilai tidak diperolehi sehingga runtime apabila ungkapan merujuk medan readonly. Sekiranya nilai diubah dalam perhimpunan yang berbeza, perubahan dapat dilihat dalam pemasangan sebaik sahaja ia dimuatkan tanpa perlu menyusun semulanya.
Kedua-dua kata kunci digunakan untuk perkara yang sama iaitu untuk mengisytiharkan ahli supaya nilai-nilai tidak boleh diubah sepanjang program. Walau bagaimanapun, kata kunci kon sangat berbeza dari kata kunci yang dibaca. Const adalah pembolehubah yang berterusan nilai yang harus dimulakan pada masa kompilasi, manakala medan readonly hanya boleh diinisialisasi pada peringkat kelas, sama ada pada masa perisytiharan atau di dalam pembina. Const adalah penyelenggaraan masa kompilasi manakala medan baca dibaca sahaja. Pembolehubah Constance boleh diakses menggunakan "Classname.VariableName" manakala pembaca yang boleh dibaca boleh diakses menggunakan "InstanceName.VariableName". Selain itu, pembolehubah rok boleh diisytiharkan dalam kaedah, manakala medan readonly tidak boleh diisytiharkan dalam kaedah.