C# 6.0 içerisinde yer alan bu özellik ile Auto Property' lere default değer ataması yapılabilmektedir. İlk olarak 6.0 öncesinde benzer işlemin nasıl yapıldığını inceleyelim.
public class Personel { public Personel(string ad) { this.Ad = ad; } public string Ad { get; set; } }
Ya da
public class Personel { public Personel() { this.Ad = "ali"; } public string Ad { get; set; } }
şeklinde tanımlama yapıyoruz. Benzer işlemi 6.0 içerisinde aşağıdaki gibi yapabiliyoruz.
public class Personel { public string Ad { get; set; } = "Ali"; }
Kod yazımı bu şekilde oldukça kısalmaktadır.
public class Personel { public string Ad { get; set; } = string.Concat("Ali", " ", "Can"); }
Yukarıdaki gibi de değer ataması yapılabilmektedir. Sadece getter' ı olan bir auto-property için ilk değer ataması yapmak istediğimizde bunu 6.0 öncesinde şu şekilde yapabiliyoruz.
public class Personel { public Personel(string ad) { this.Ad = ad; } public string Ad { get; } }
public class Personel { public Personel() { this.Ad = "Ali Can"; } public string Ad { get; } }
public class Personel { private readonly string ad = "ali"; public Personel() { this.Ad = ad; } public string Ad { get; } }
public class Personel { private readonly string ad = "ali"; public string Ad { get { return ad; } } }
Yukarıki yöntemlerden herhangi birisi kullanılabilir. Bunun yerine 6.0 ile getter only auto property' lere aşağıdaki gibi default değer ataması yapılabilmektedir.
public class Personel { public string Ad { get; } = "Ali Can"; }
Aşağıda auto property initializers ile ilgili farklı örnekler bulunmaktadır.
public class Personel { public string Ad { get; } = "Ali Can"; public DateTime KayitTarihi { get; set; } = DateTime.Now; public bool Aktif { get; set; } = true; public Image Resim { get; set; } = Image.FromFile("Resim"); public Color Renk { get; set; } = Color.Red; public List< Personel> Elemanlar { get; set; } = new List< Personel>(); }
Başarılar dilerim.