Perbezaan antara malar dan dibaca

Perbezaan antara malar dan dibaca

Penting untuk memahami konsep pengaturcaraan C# sebelum anda meneruskan melaksanakan kod tersebut. Sebelum kita melompat ke perbezaan antara const dan readonly, mari kita fahami kata kunci terlebih dahulu dan bagaimana ia digunakan dalam 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 terpelihara yang digunakan untuk mewakili nilai malar dan ia menentukan bahawa nilai tidak dapat diubah suai selepas kompilasi masa, sedangkan readonly adalah pengubah yang dapat digunakan pada medan dan nilai yang dapat diubah semasa runtime. Mari kita lihat beberapa perbezaan utama antara const dan readonly.

Apa itu Const?

Const merujuk kepada pemboleh ubah yang tetap dan nilai yang perlu diberikan hanya sekali, semasa pengisytiharan. Apabila kata kunci Const digunakan semasa perisytiharan, ia menjadi makna yang tetap nilai tetap malar dan tidak dapat diubah sepanjang program. Ini lebih daripada perkataan terpelihara yang menentukan bahawa nilai tidak boleh diubah suai selepas masa kompilasi. Const secara tersirat statik secara lalai, jadi ia boleh dipanggil dengan nama kelas menggunakan "nama kelas.Variablename ”. Nilai malar juga dipanggil sebagai literals. Ia boleh menjadi jenis data asas seperti const integer, const terapung, atau rentetan literal.

Apa yang dibaca?

Kata kunci readOnly adalah pengubah yang boleh digunakan hanya pada medan tetapi bukan pembolehubah tempatan. Bidang baca boleh dimulakan sama ada pada masa pengisytiharan atau di dalam pembina di kelas yang sama, jadi nilai -nilai boleh berbeza untuk hukuman mati yang berlainan dalam program bergantung kepada pembina yang digunakan. Kata kunci yang dibaca menentukan bahawa pemboleh ubah contoh objek tidak dapat diubah suai dan sebarang percubaan untuk mengubah suai selepas pengisytiharan menghasilkan kesilapan penyusunan. Pembolehubah tidak menjadi tidak dapat diubah suai sehingga selepas pelaksanaan. Pembolehubah dibuat hanya untuk berhenti memanggil kod dari secara tidak sengaja mengubahnya setelah dibina.

Perbezaan antara malar dan dibaca

  1. Asas

Kata kunci malar (const) tidak lain hanyalah pembolehubah yang tidak berubah nilai yang hanya dapat dimulakan pada waktu penyusunan. Nilai -nilai malar ini juga dipanggil sebagai literal. Ia hanya membolehkan kita menentukan sama ada pemboleh ubah boleh diubah suai atau tidak. Secara ringkas, pemalar secara tersirat statik dan mereka harus diasaskan sebelum mereka digunakan dalam program ini. Kata kunci ReadOnly, sebaliknya, adalah pengubah yang boleh digunakan pada medan dan nilai yang dapat diubah semasa runtime. Ia menghalang medan daripada berubah dan nilai -nilai yang boleh ditetapkan melalui pembolehubah rujukan.

  1. Permulaan

Const adalah statik secara lalai dan nilai -nilai yang harus diberikan pada masa pengisytiharan pembolehubah yang bermaksud nilai -nilai hanya diberikan pada waktu penyusunan. Pemalar diisytiharkan menggunakan kata kunci "const". Inisialisasi medan tetap mestilah ungkapan yang tetap dan tidak boleh diubah suai. Ringkasnya, const adalah pemalar masa kompilasi. Bidang readonly, sebaliknya, hanya boleh dimulakan di peringkat kelas tidak di dalam kaedah dan medan tidak dapat diubah suai selepas permulaan. Dalam erti kata lain, pembolehubah baca boleh dimulakan pada masa pengisytiharan atau di dalam pembina.

  1. Peruntukan memori

Nilai const dimasukkan terus ke dalam kod kerana ia bertindak sebagai penggantian masa kompilasi.  Pengkompil meletakkan nilai malar dalam metadata pemasangan yang mentakrifkan pemalar dan menanamkan nilai dalam kod IL itu sendiri selepas permulaan, jadi tiada ingatan diperlukan untuk pemalar semasa runtime untuk peruntukan. Nilai readonly tidak malar dan ia disimpan dalam timbunan loader memori yang tidak dapat diperuntukkan sehingga jenisnya dimuatkan. Bidang readonly disimpan dalam memori dinamik supaya nilai -nilai hanya dapat diperoleh pada runtime.

  1. Versi Perduaan

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 penyusunan. Jadi jika nilai digunakan dalam perhimpunan yang berbeza, pemasangan asal perlu dikemas kini dan nilai harus diubah. Perubahan dalam perhimpunan tidak dicerminkan sehingga ia dikompilasi. Nilai tidak diperoleh sehingga runtime apabila ungkapan merujuk medan readonly. Sekiranya nilai diubah dalam perhimpunan yang berbeza, perubahan itu dapat dilihat dalam perhimpunan sebaik sahaja ia dimuatkan tanpa perlu dikompilasi semula.

Const vs. ReadOnly: Carta Perbandingan

Ringkasan Const vs. Baca sahaja

Kedua -dua kata kunci digunakan untuk perkara yang sama yang mengisytiharkan ahli supaya nilai -nilai tidak dapat berubah sepanjang program. Walau bagaimanapun, kata kunci const sangat berbeza dengan kata kunci readonly. Const adalah pemboleh ubah tetap nilai yang harus dimulakan pada waktu kompilasi, sedangkan medan readonly hanya dapat diasaskan pada tahap kelas, sama ada pada waktu pengisytiharan atau di dalam pembina. Const adalah pemalar masa kompilasi manakala medan readonly hanya dibaca. Pembolehubah Constance boleh diakses menggunakan "Nama Class.Variablename "sementara pembolehubah baca boleh diakses menggunakan" Instancename Name.Variablename ”. Selain itu, pembolehubah const boleh diisytiharkan dalam kaedah, sedangkan medan readonly tidak dapat diisytiharkan dalam kaedah.