Const, Static, Readonly Kavramları

Sosyal medyada paylaşın

Const(constant)

Const değişmeyen bir değişken türü denebilir. Class seviyesinde, fonksiyonda veya herhangi bir yerde tanımlanabilir. Tanımlama anında değeri verilmek zorundadır. Tanımlandıktan sonra değiştirilemez. Bu değişkeni tutan hücre sabit hale getirilir. Yalnızca ilkel veri yapıları const olarak tanımlanabilir (int, float, string) gibi. Const tanımlanırken otomatik olarak static özelliğide eklenir, bu yüzden ek olarak “static const….” yazmanıza gerek yok. Static anahtar kelimesine aşağıda değineceğim.

Örneğin ışık hızı, pi sayısı veya kendimden örnek verecek olursam bir url’den json çekmem gerekirken url için kullandığım string değişkeni Const olarak tanımlıyorum. Bir değişken tanımlayacağım ama program çalıştığı sürece asla değişmeyecekse Const kullanmak mantıklı bir davranış olacaktır. Çünkü const şeklinde tanımlanan veri tipleri bellekte daha az yer kaplar. Const değişkenler compile time sabitleri olduğundan, kod çalışırken bellekte sabit bir konumdadırlar ve program çalıştırılırken bu konum değiştirilmez. Compile time’da değerleri belirlenir ve derleme sürecinde sabit değerler inline olarak kullanılırlar. Bu nedenle, Const değişkenleri kullanmak bellek kullanımını azaltabilir. Ancak, Const kullanmanın dezavantajı, değerleri değiştirilemeyen değişkenler olduğu için, programın ilerleyen aşamalarında ihtiyaçlar değiştiğinde değiştirilemezler. Bu durumda, readonly anahtar kelimesi kullanılarak değeri derleme zamanında bilinmeyen ancak çalışma zamanında belirlenen sabitler tanımlanabilir.

    const string url= "https://www.blog.fadesoftware.net/";
    void Start()
    {      
        url = "asdad"; //Hata verir, const tipindeki değişkenler değiştirilemez.
    }

Static

Method, değişken veya sınıf tanımlanması için kullanılabilir. Static anahtar kelimesi, spesifik bir üyeyi static olarak belirtmek için kullanılır. Bu, static üyelerin tüm nesneler için ortak olduğu ve belirli bir nesneye bağlanmadıkları anlamına gelir. Farklı bir class’daki üyeye miras almadan veya obje oluşturmadan değişkenlere veya metodlara erişebilmenize olanak tanır. Direkt olarak sınıf adı üzerinden erişebiliriz.

    public static int number = 23;

Readonly

Const ile hemen hemen aynıdır. Sadece class seviyesinde tanımlanabilir. Tanımlandıktan sonra sadece Constructor içerisinde değeri değiştirilebilir.

    readonly string name;