Const Readonly Static
C#

Const ve Readonly Kullanımı

Bir önceki yazımızda değişken kavramından bahsetmiştik. Kısaca burda bahsetmek gerekirse değişken bir veri tipine ait temel verilerin geçici olarak tutulduğu ve gerektiğinde kullanılmak üzere oluşturulan bir sistemdir. Programlamada değişkenler adı üstünde değişen yapılardır. Birde bunların değişmeyenleri yani sabitler vardır. Sabitler yazılımın çalıştığı süre boyunca değiştirilemez durumdadır. İçeriği sabit olan değerlerin saklanması için kullanılır. Örnek verecek olursak bloglarda da sıklıkla karşılaştığımız “Pi” sayısını ele alalım. “Pi” sayısı sabittir. Program süreci içerisinde değiştirilemez. Çünkü bu bir standarttır. Şimdi aklınıza şöyle bir soru gelebilir. Neden normal bir değişken tanımlayıp bu tür sabit olacak verileri bu değişkenlerde tutsak olmaz mı? Aslında Bu duruma engel teşkil edecek hiçbir sebeb yoktur. Fakat yazılımın ilerleyen aşamalarında intellicense yani kod yazarken açılan pencerede yanlışlıkla bu değişkenin seçilmesi halinde yazılımın ilerleyen aşamalarında kod karmaşıklığını önlemek amacıyla yazılmcıyı uyararak bu durumun önüne geçmektir. C# programlama dilinde iki farklı şekilde sabit tanımlayabiliriz. Bunlar;

Compile – Time Constants (Const)

Türkçe’de sabit anlamına gelir. Tanımlama anında değeri verilmek zorundadır. Sonradan değeri değiştirilimez. Derleme zamanında (Compile Time) değeri bellidir. Çalışma zamanında (Run Time) değer verilemez. Ayrıca const ve static keywordleri bir arada kullanılamaz. Çünkü const aynı zamanda static’tir. Yani bağlı olduğu class ismi ile ulaşılabilir. Herhangi bir instance oluşturmaya gerek yoktur.

Aşağıdaki görselde const tanımlamasına küçük bir örnek verelim.

const

Tanımlama anında değer vermemiz gerektiğini belirtmiştik. Şimdi const’un static bir yapı olduğunu ispatlayalım. Bir nesne oluşturarak verdiğimiz değer intellicense ekranında member access degerlerinde geliyor mu? Buna bakalım.

static

Gördüğünüz üzere nesnemizin member access değerlerinde “URL_adress” sabitimize ulaşamamaktayız. Static bir yapı olduğu için direk sınıf ismi yazılarak erişim sağlayabilmekteyiz.

static

“const” hakkında bilmemiz gerekenler

  • Const ile tanımladağımız bir sabite mutlaka bir değer atamamız gerekmektedir. Çalışma zamanı (run time)’da değer ataması yapamayız.
  • Bir kere verildikten sonra tekrar değer verilemez.
  • Const ifadeler sadece primative(int, double, string v.b.) değerleri tanımlamada kullanılır. Referans bazlı tanımlarla birlikte kullanılmaz.

Static keyword Nedir ve Ne için kullanılır?

C# dili içerisinde, “static” (durağan) anahtar kelimesi bir sınıf veya struct içerisinde tanımlanmış bir özellik veya metodun, sınıf veya struct nesnesi oluşturulduğunda değil, sınıf veya struct adı ile çağrılacağını belirtir. Static sınıf, sadece statik özellikler ve metotlar içerebildiğinden, oluşturulması sadece bu özelliklere ve metotlara erişmek istenildiğinde tercih edilir. Metod, değişken veya sınıf tanımlanması için kullanılabilir, fakat dikkat edilmesi gereken şey static sınıf içine yalnızca static metod yazılır, static metod içine ise static değişkenler tanımlanmak zorundadır.

Runtime – Time Constants (Readonly)

Sadece-Okunabilir anlamına gelir. Tanımlandığı anda değeri verilebilir veya Constructor (Yapıcı Metod) seviyesinde derleme veya çalışma zamanında değeri verilebilir. Constructor yapısı kullanılarak istenildiği kadar sabitin değeri değiştirilebilir. Readonly kullanabilmek için bağlı olduğu class üzerinden nesne oluşturularak kullanılabilir.

Şimdi kısaca readonly kullanımına bir örnek verelim.

readonly

Const tanımlamasında değer vermek zorunluyken Readonly kullanımında durum değişir. İster tanımlama esnasında yada programın ilerleyen aşamalarında Constructor yapısı ile değer atanabilir.

Readonly

Nesnemizi oluşturduk ve readonly sabitlerimize bu şekilde ulaştık. Şimdi sıra geldi bu sabitimize nasıl ve nerede değer atayacağız.

Constructor

Daha öncede belirttiğim gibi constructor yapısı içerisinde atama yapmak istediğimiz sabite parametreden gelecek olan değerini atadık.

struct

Ve nesnemizi oluştururken constructor’dan gelen parametre değerlerini atayarak sabitimize değerini vermiş olduk.

“readonly” hakkında bilmemiz gerekenler

  • Readonly sabitine tanımlamak istediğimiz değeri derleme veya çalışma zamanında verebiliriz. Ama genelde belirsizlik durumlarında yani değerin değişip, değişmeyeceği konusunda bir belirsizlik varsa ki buda programın çalışma süreci içerisinde belli olacağından çalışma zamanın (run time) da kullanılır.
  • Readonly sabitinin değerine ulaşabilmek için instance (nesne) oluşturulması gerekmektedir.
  • Sadece Constructor (Yapıcı Metod) seviyesinde değeri verilebilir.

Kısaca özetle belirtmek gerekirse;

  1. Değerin hiçbir zaman değişmeyeceğini biliyorsanız, const kullanın.
  2. Değerin değişip değişmeyeceğinden emin değilseniz, ancak diğer sınıfların veya kodun onu değiştirmesini istemiyorsanız readonly kullanın.
  3. Bir türün özelliği olması için bir alana ihtiyacınız varsa ve o türün bir örneğinin özelliği olmadığında static kullanın.

Bir cevap yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir