readonly anahtar sözcüğü
- İlk tanımlandığında değer ataması yapılarak
- Bir constructor içinde değer ataması yapılarak
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(); } }
(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..
0 yorum:
Yorum Gönder