CodeBlanks Logo Icon CodeBlanks

readonly alanlar

C# kursu · Orta seviye · Ders 37/116

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

  1. 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.

  2. Boşluğu doldur: readonly tanımı

    class User
    {
        public ____ int Id;
    }
    Cevabı göster
    class User
    {
        public readonly int Id;
    }
  3. 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

Orta seviye bölümündeki tüm dersler