readonly alanlar
readonly ile çalışma zamanı sabitlerini öğrenirsin.
readonly alanlar
Bir readonly alan, çalışma zamanında belirlenen değişmez üyedir. Tanımı: public readonly int Id;. Yalnızca tanımında veya sınıfın yapıcı metotlarında atanabilir; sonrasında değiştirilemez.
Const'tan farklı olarak readonly'ye new DateTime(2024,1,1) gibi çalışma zamanı değeri verilebilir. Ayrıca readonly örnek üyesidir; her örnekte farklı değer alabilir. Yapıcıdan sonra değişmediği için değişmezlik (immutability) sağlar.
readonly ne zaman kullanılır?
readonly, değeri yapıcıdan sonra değişmemesi gereken ama yapıcıya göre belirlenen alanlar için uygundur. Örnek: bir User nesnesinin Id ve CreatedAt alanları yapıcıdan alınır ve sonrasında değişmez.
Benzer şekilde Order sınıfının OrderDate alanı yapıcıda DateTime.Now ile belirlenir ve readonly yapılır. Bu, yanlışlıkla sonradan değiştirilmesini engeller. Örnek duruma göre değişen değerler const olamaz; readonly doğal seçimdir.
Uygulama Kullanıcı modeli
User sınıfına public readonly int Id; ve public readonly string Name; alanlarını ekle. Yapıcı metot bunları this.Id = id; ve this.Name = name; atamasıyla kursun. Main'de new User(1, "Ayşe") üretip Id ve Name'i yazdır.
Örnek çözümü göster
User içine `public readonly int Id;` ve `public readonly string Name;` ekle. Yapıcıda `this.Id = id;` ve `this.Name = name;` yaz. Main içine `var u = new User(1, "Ayşe"); Console.WriteLine(u.Id); Console.WriteLine(u.Name);` yaz.
Örnek çözüm:
using System;
class User
{
public readonly int Id;
public readonly string Name;
public User(int id, string name)
{
this.Id = id;
this.Name = name;
}
}
class Program
{
static void Main()
{
var u = new User(1, "Ayşe");
Console.WriteLine(u.Id);
Console.WriteLine(u.Name);
}
}
Kendini test et
-
readonly ile ilgili hangisi yanlıştır?
- readonly alan yapıcıda atanır.
- readonly alan çalışma zamanı değeri alabilir.
- readonly alan her örnekte farklı olabilir.
- readonly alan derleme zamanında değer alır.
Cevabı göster
readonly alan derleme zamanında değer alır. — Yanlış olan bu. readonly çalışma zamanında değer alır; derleme zamanında değil.
-
Boşluğu doldur: readonly tanımı
class User { public ____ int Id; }Cevabı göster
class User { public readonly int Id; } -
Eşleştir: readonly özellikleri
- atanma yeri
- yapıcı metot
- değer türü
- çalışma zamanı
- örnek kopyası
- her nesnede ayrı
- sonradan değiştirme
- yasak