Rumah > Artikel > pembangunan bahagian belakang > Terangkan perbezaan antara kata kunci const dan baca sahaja dalam C#
Dalam C#, kedua-dua kata kunci const dan baca sahaja digunakan untuk menentukan nilai tidak berubah yang tidak boleh diubah suai setelah diisytiharkan. Walau bagaimanapun, terdapat beberapa perbezaan penting antara keduanya. Pengubah suai
const mengisytiharkan nilai malar yang diketahui pada masa penyusunan dan tidak berubah, iaitu ia tidak berubah. Dalam C#, hanya jenis terbina dalam boleh ditanda const. Jenis yang ditentukan pengguna (seperti kelas, struktur, dll.) tidak boleh const. Selain itu, jenis ahli kelas (seperti kaedah, sifat, atau peristiwa) tidak boleh ditandakan sebagai pemalar.
Anda mesti memulakan pemalar semasa pengisytiharan.
class Period{ public const int hours = 12; public const int minutes = 60; }
Malar boleh ditanda dengan mana-mana pengubah kebolehlihatan, iaitu peribadi, awam, dilindungi, dilindungi dalaman atau peribadi dilindungi.
Pemalar juga bertindak sebagai nilai statik, iaitu nilai pemalar dikaitkan dengan semua kejadian kelas. Anda tidak perlu menandakannya secara eksplisit menggunakan kata kunci statik. Anda tidak boleh mengakses pemalar menggunakan pembolehubah contoh kelas, anda mesti menggunakan nama kelas.
Medan yang ditandakan sebagai baca sahaja hanya boleh diisytiharkan atau dalam pembina. Sebaik sahaja contoh kelas dibuat, medan baca sahaja tidak boleh diubah suai.
Jika medan ialah jenis nilai, menandakannya sebagai baca sahaja menjadikannya tidak boleh diubah. Sebaliknya, jika medan baca sahaja ialah jenis rujukan, maka anda masih boleh menukar data objek yang dirujuk oleh pembolehubah itu. Walau bagaimanapun, anda tidak boleh menukar rujukan untuk menunjuk ke objek baharu.
class Person{ private readonly string _title; private readonly string _skill; public Person(string title, string skill){ _title = title; _skill = skill; } }
Medan baca sahaja boleh diberikan beberapa kali dalam pengisytiharan medan dan dalam mana-mana pembina. Selain itu, ia boleh mempunyai nilai yang berbeza bergantung pada pembina yang digunakan.
Perbezaan penting antara keduanya ialah medan const atau baca sahaja yang diisytiharkan dalam satu perhimpunan akan disusun apabila digunakan dalam perhimpunan lain.
Untuk nilai const ia seperti cari dan ganti. Nilai malar "dibakar" ke dalam bahasa perantaraan perhimpunan kedua. Ini bermakna jika anda mengemas kini pemalar, pemasangan kedua masih akan mempunyai nilai pertama sehingga anda menyusunnya semula.
Untuk nilai baca sahaja, ia seperti rujukan kepada lokasi memori. Nilai tidak dibenamkan dalam bahasa perantaraan perhimpunan kedua. Ini bermakna jika lokasi memori dikemas kini, pemasangan kedua akan mendapat nilai baharu tanpa menyusun semula. Mengemas kini medan baca sahaja bermakna hanya himpunan pertama yang perlu disusun, bukan sebarang himpunan pengguna.
Demonstrasi masa nyata
using System; class Program{ static void Main(){ Console.WriteLine(Period.HOURS); var person = new Person("John", "Programmer"); person.Print(); } } class Period{ public const int HOURS = 12; public const int MINUTES = 60; } class Person{ private readonly string _title; private readonly string _skill; public Person(string title, string skill){ _title = title; _skill = skill; } public void Change(string skill){ // Error: A readonly field cannot be assigned to // this._skill = skill; } public void Print(){ Console.WriteLine($"{_title}: {_skill}"); } }
12 John: Programmer
Atas ialah kandungan terperinci Terangkan perbezaan antara kata kunci const dan baca sahaja dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!