Kodu uygulamaya başlamadan önce C # programlama kavramlarını anlamak önemlidir. Const ve readonly arasındaki farklara geçmeden önce, ilk olarak anahtar kelimeleri ve bunların bir programda nasıl kullanıldığını anlayalım. Her ikisi de C # programlama ve temel olarak aynı amaç için kullanılan en yaygın anahtar kelimelerdir. Ancak, her iki anahtar kelime de birbirinden çok farklıdır. Const, sabit değerleri temsil etmek için kullanılan ayrılmış bir kelimedir ve derleme süresinden sonra bir değerin değiştirilemeyeceğini belirtirken, salt okunur alanlar üzerinde kullanılabilen ve çalışma zamanı sırasında değeri değiştirilebilen bir değiştiricidir. Const ve readonly arasındaki bazı önemli farklılıklara bir göz atalım.
Const, sabit bir değişkeni ifade eder ve beyanı sırasında değeri yalnızca bir kez atanması gerekir. Bir deyim sırasında const anahtar sözcüğü kullanıldığında, değer sabit kalır ve program boyunca değiştirilemez. Daha çok, bir değerin derleme süresinden sonra değiştirilmemesi gerektiğini belirten ayrılmış bir sözcüktür. Bir const varsayılan olarak kapalı statiktir, bu nedenle “Classname.VariableName” kullanılarak sınıf adıyla çağrılabilir. Sabit değerlere değişmez değer de denir. Tamsayı sabit, kayan sabit veya dize değişmez değeri gibi herhangi bir temel veri türünde olabilir.
Readonly anahtar sözcüğü, yerel değişkenlerde değil, yalnızca alanlarda kullanılabilen bir değiştiricidir. Salt okunur bir alan, bildirim sırasında veya aynı sınıftaki bir kurucu içinde başlatılabilir, böylece kullanılan kurucuya bağlı olarak, değerler programın farklı yürütmeleri için farklı olabilir. Salt okunur anahtar kelime, bir nesnenin örnek değişkeninin değiştirilemeyeceğini ve bildirimden sonra herhangi bir değişiklik girişiminin derleme hatasına neden olduğunu belirtir. Değişken yürütme sonrasına kadar değiştirilemez hale gelmez. Değişkenler yalnızca kodun oluşturulduktan sonra yanlışlıkla değiştirilmesini durdurmak için salt okunur yapılır.
Sabit (const) anahtar sözcüğü, değeri yalnızca derleme zamanında başlatılabilen değişmez değişkenlerden başka bir şey değildir. Bu sabit değerlere değişmez değer de denir. Sadece bir değişkenin değiştirilip değiştirilemeyeceğini belirlememize izin verir. Basit bir ifadeyle, sabitler dolaylı olarak statiktir ve programda kullanılmadan önce başlatılmaları gerekir. Öte yandan, salt okunur anahtar kelime, alanlar üzerinde kullanılabilen ve değeri çalışma zamanı sırasında değiştirilebilen bir değiştiricidir. Alanların değiştirilmesini önler ve değerleri referans değişkenleri ile ayarlanabilir.
Bir sabit varsayılan olarak statiktir ve değişken bildirimi sırasında değerlerin atanması, yani değerlerin yalnızca derleme zamanında atanması anlamına gelir. "Const" anahtar sözcüğü kullanılarak bir sabit bildirilir. Sabit bir alanın başlatılması sabit bir ifade olmalıdır ve değiştirilemez. Basitçe söylemek gerekirse, bir const derleme zamanı sabiti. Öte yandan, salt okunur bir alan yalnızca yöntemin içinde değil sınıf düzeyinde başlatılabilir ve alan, başlatma işleminden sonra değiştirilemez. Başka bir deyişle, salt okunur değişkenler bildirim sırasında veya bir kurucu içinde başlatılabilir.
Bir const değeri, derleme zamanı değiştirme işlevi gördüğünden doğrudan koda konur. Derleyici sabit değeri tanımlayan derleme meta verilerine sabit değeri yerleştirir ve değeri başlatmadan sonra IL kodunun içine gömer; bu nedenle ayırma için çalışma zamanında sabitler için bellek gerekmez. Salt okunur değer sabit değildir ve yükleyici türü yüklenene kadar ayrılamayan bellek yığınında saklanır. Salt okunur alanlar dinamik bellekte saklanır, böylece değerler sadece çalışma zamanında elde edilebilir.
Her iki anahtar kelime de neredeyse aynı amaçla kullanılsa da, farklı ikili sürüm semantiği vardır. Bir ifade bir sabite başvurduğunda, derleyici değeri derleme zamanında gömer. Dolayısıyla değer farklı bir montajda kullanılıyorsa, orijinal montajın güncellenmesi ve değerin değiştirilmesi gerekir. Montajdaki değişiklikler yeniden derleninceye kadar yansıtılmaz. Bir ifade salt okunur bir alana başvurduğunda çalışma zamanına kadar değer elde edilmez. Değer farklı bir montajda değiştirilirse, değişiklikler yeniden derlenmesine gerek kalmadan yüklenir kurulmaz yansıtılır..
Her iki anahtar kelime de değerleri bildirmek için kullanılır, böylece değerler program boyunca değiştirilemez. Ancak, const anahtar kelimesi salt okunur anahtar kelimeden çok farklıdır. Const, değeri derleme zamanında başlatılması gereken sabit bir değişkendir, oysa salt okunur bir alan yalnızca bildirim sırasında veya kurucu içinde sınıf düzeyinde başlatılabilir. Const bir derleme zamanı sabiti iken salt okunur alanlar salt okunurdur. Konstanz değişkenlerine “Classname.VariableName” kullanılarak erişilebilirken, salt okunur değişkenlere “InstanceName.VariableName” kullanılarak erişilebilir. Ayrıca, const değişkenleri yöntemlerde bildirilebilirken, salt okunur alanlar yöntemlerde bildirilemez.