C# const ve readonly farkı

const : Türkçe’ye Sabit olarak çevrilebilir. Class seviyesinde tanımlanır ve tanımlanma anında değeri verilmek zorundadır. Sonradan değeri değiştirilemez. Yani o değişkenin değeri derleme anında ( compile time) bellidir ve sonradan değiştirilemez. Ayrıca hem const hem de static keywordleri bir arada kullanılamaz. Çünkü const aynı zamanda static’tir.

static değişkenlere class ismi ile ulaşıldığı için, aynısı const için de geçerlidir.

readonly : Sadece-Okunabilir anlamına gelir. Class seviyesinde tanımlanır. Tanımlandığı anda değeri verilebilir veya Class Constructor’ında değeri verilebilir. Sonradan değeri değiştirilemez, readonly olarak tanımlanan bir değişkene tanımlandığı anda veya bulunduğu sınıfın constructor metodu içerisinde değer verilebilir. Değeri const değişkenlerde olduğu gibi derleme anında belirlenmek zorunda değildir. Çalışma zamanında constructor  içinde belirlenebilir.

http://enginpolat.com/csharp-const-ve-readonly-farki/

public class Matematik
{
    private const double PI = 3.14159;
}
public class Matematik
{
    private readonly int PI; /// PI değişkeninin değerini burada da verebilirdim.
    public Matematik()
    {
        PI = 22 / 7;
    }
}
using System;
 
public class UsingConstAndReadonly
{
    public class ConstReadOnly
    {
        //const değişkene tanımlandığı anda değer verilmelidir.
        public const double PI = 3.14159;
        public readonly int x = 3;
        public readonly int y;
 
        public ConstReadOnly(int value)
        {
            //readonly değişkenlere constructor metodu içinde atama yapılabilir.
            y = value;
        }
    }
 
    public static void Main( )
    {
        //PI = 3.5;  HATA
        ConstReadOnly obj = new ConstReadOnly(10);
 
        Console.WriteLine( obj.y );
        Console.WriteLine( obj.x );
 
        /*const olan bir değer aynı zamanda static 
         * olduğu için class adı ile ulaşıyoruz */
 
        Console.WriteLine( ConstReadOnly.PI );
 
    }
     
}

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s