CodeBlanks Logo Icon CodeBlanks

const ve readonly

C# kursu · Orta seviye · Ders 33/116

const ve readonly arasındaki farkı öğrenirsin.

const alanlar

Bir const (constant) alan derleme zamanında hesaplanan değişmez değerdir. Tanımı: public const double Pi = 3.14;.

Const değerler derleme zamanında yerlerine konur; yani her Pi başvurusu 3.14 ile değiştirilir. Bu yüzden const alanlara yalnızca sabit ifadeler atanabilir; metot çağrısı veya çalışma zamanı değeri verilmez. Const alanlar örtük olarak statiktir; ClassName.Pi ile erişilir.

readonly alanlar

Bir readonly alan, çalışma zamanında değişmez değer tutar. Tanımı: public readonly int Radius;. Yalnızca tanımlandığı yerde ya da yapıcı metot içinde atanabilir; sonrasında değiştirilemez.

Const'tan farkı: 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. Sabit hesaplaması yapılamayan veya örneğe özel değerler için readonly kullanılır.

Uygulama Daire çevresi

Circle sınıfına public const double Pi = 3.14; ve public readonly int Radius; alanlarını ekle. Yapıcı this.Radius = radius; atamasını yapsın. Perimeter metodu (int)(2 * Pi * Radius) döndürsün. Main'de new Circle(5) üretip çevreyi yazdır.

Örnek çözümü göster
Circle içine `public const double Pi = 3.14;` ve `public readonly int Radius;` ekle. Yapıcıda `this.Radius = radius;` yaz. Perimeter gövdesinde `return (int)(2 * Pi * Radius);` yaz. Main içine `var c = new Circle(5); Console.WriteLine(c.Perimeter());` yaz.
Örnek çözüm:
using System;

class Circle
{
    public const double Pi = 3.14;
    public readonly int Radius;

    public Circle(int radius)
    {
        this.Radius = radius;
    }

    public int Perimeter()
    {
        return (int)(2 * Pi * Radius);
    }
}

class Program
{
    static void Main()
    {
        var c = new Circle(5);
        Console.WriteLine(c.Perimeter());
    }
}

Kendini test et

  1. const ile ilgili hangisi doğrudur?

    • Const alanlara çalışma zamanında değer atanabilir.
    • Const alanlar örtük olarak statiktir.
    • Const alanlar yapıcı metotta değiştirilebilir.
    • Const alanlar yalnızca string olabilir.
    Cevabı göster

    Const alanlar örtük olarak statiktir. — Doğru. Const alanlar örtük olarak statiktir; sınıf adıyla erişilir.

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

    class MathConst
    {
        public const double Pi = ____;
    }
    Cevabı göster
    class MathConst
    {
        public const double Pi = 3.14;
    }
  3. Eşleştir: const ve readonly

    const
    derleme zamanı sabiti
    readonly
    yapıcıda atanır
    const Pi
    örtük statik
    readonly Radius
    her örnekte ayrı

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