CodeBlanks Logo Icon CodeBlanks

init only setter

C# kursu · Orta seviye · Ders 27/116

init ile yalnızca başlatma sırasında yazılabilir özellikleri öğrenirsin.

init only setter

init anahtar kelimesi, bir özelliğin yalnızca nesne oluşturulurken ayrılmasına izin verir; sonradan değiştirilemez. Bildirimi: public string Name { get; init; }.

Bu, set'in esnekliğini readonly'nin güvenliğiyle birleştirir. Nesne başlatıcı ile değer verirsin: new Point { X = 3, Y = 4 }. Ama oluşturulduktan sonra p.X = 5 derleme hatası verir. Bu, değişmez (immutable) nesneler yazmayı kolaylaştırır.

Neden init?

Değişmez nesneler eşzamanlılık (concurrency) için daha güvenlidir: başka bir iş parçacığı değeri değiştiremeyeceği için kilit gerekmez. init, değişmezliği kurulumdan sonra garanti eder.

Ayrıca nesne başlatıcı sözdizimi çalışır: new Point { X = 3, Y = 4 } ile değerleri tek satırda verirsin. readonly alan kullanırsan başlatıcı çalışmaz; yapıcı metot yazmak zorunda kalırsın. init bu yükü ortadan kaldırır.

Uygulama Point sınıfına init özellik ekle

Bir Point sınıfı tanımla. İçine public int X { get; init; } ve public int Y { get; init; } özelliklerini ekle. Main içinde new Point { X = 3, Y = 4 } ile örnek oluştur ve X'i yazdır.

Örnek çözümü göster
Point'e X ve Y init özelliklerini ekle. Main içine Point p = new Point { X = 3, Y = 4 }; Console.WriteLine(p.X); yaz.
Örnek çözüm:
using System;

class Point
{
    public int X { get; init; }
    public int Y { get; init; }
}

class Program
{
    static void Main()
    {
        Point p = new Point { X = 3, Y = 4 };
        Console.WriteLine(p.X);
    }
}

Kendini test et

  1. Hangisi yalnız başlatmada yazılabilen özelliktir?

    • public string Name { get; set; }
    • public string Name { get; init; }
    • public string Name { get; }
    • public string Name;
    Cevabı göster

    public string Name { get; init; } — Doğru. init özelliği yalnız başlatmada yazılabilir.

  2. init özelliğini tamamla

    public string Name { get; ____; }
    Cevabı göster
    public string Name { get; init; }
  3. Erişimciyi davranışına eşle

    set
    Her zaman yazılır
    init
    Yalnız başlatmada
    get
    Okuma
    { get; }
    Salt okunur

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