init only setter
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
-
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.
-
init özelliğini tamamla
public string Name { get; ____; }Cevabı göster
public string Name { get; init; } -
Erişimciyi davranışına eşle
- set
- Her zaman yazılır
- init
- Yalnız başlatmada
- get
- Okuma
- { get; }
- Salt okunur