28 Şubat 2018 Çarşamba

C# readonly ve const ifadeleri

readonly anahtar sözcüğü


Birçok yerde readonly ifadesini görmüşsünüzdür. readonly olarak tanımlanan bir değişken yalnızca okunmak üzere tanımlanır ve yalnızca 2 şekilde değer ataması yapılabilir.

  1. İlk tanımlandığında değer ataması yapılarak
  2. Bir constructor içinde değer ataması yapılarak
Yukardaki 2 durum hariç readonly değişkenine değer ataması yapılamaz.

Bu durum, aslında sadece bir yapılandırıcı tarafından değer ataması yapılması gerektiği durumlarda kullanışlıdır. Böylece daha sonra değer değiştirmesi önlenmiş olur. Kullanım alanı oldukça fazladır.

Aşağıdaki örneği inceleyelim:


class DenemeClass { readonly double x = 30; public DenemeClass(int _x) { x = _x; //İlk değer ataması yapıldı x = x * 5; //Burda değeri değiştiriliyor. Doğru ifade çünkü constructor içindeyiz. } public DenemeClass(double _x) { x = _x; } public void Show() { Console.WriteLine(x); } static void Main() { DenemeClass dc = new DenemeClass(10); dc.Show(); DenemeClass dc2 = new DenemeClass(10.2); dc2.Show(); dc2.x = 10.3;//HATA!! Burada "A readonly field cannot be assigned to
(except in a constructor or a variable initializer)" hatası alacaksınız.
Console.Read(); } }





Yukardaki örnekte dc2.x = 10.3; ataması yapıldığında program kızacaktır. Çünkü bir readonly değişken, hata açıklamasında yazdığı üzere sadece ilk değer atamasında ya da bir constructor'da set edilebilir.

const anahtar sözcüğü

Yukarda readonly ifadesini açıkladık. const da aslında readonly'e benzer özellikler gösterir. Aralarındaki fark, const ifadesi yalnızca ilk değer atamasında değer verilip daha sonra program boyunca tekrar değiştirilemeyecektir. Ayrıca ilk değer ataması zorunludur.

const int a; //HATA!! Değer ataması yapılmalıdır const int a = 10; //Doğru ifade. . . . a = 20; //HATA!! const bir değişken daha sonra değiştirilemez.

readonly ile const arasındaki farkı da bu şekilde açıklamış olduk.

Bir sonraki yazıda görüşmek üzere...

İyi kodlamalar dilerim..


Paylaş:

0 yorum:

Yorum Gönder

Bu Blogda Ara