C# 6.0 – Auto Property Initializers

Yazılım dünyasında diller gün geçtikçe kendini yenilemekte ve bu şekilde var olan diller güncelliklerini korumanın yanında neredeyse beşeri hayatta da kullanılabilecek seviyeye adım adım yaklaştığı görülmektedir.Hal böyleyken biz yazılımcılar bu dilin yeni yapılarını takip ederek artık yeni teknikler ve teknolojiler öğrenmekten ziyade var olan gramerin daha sosyal versiyonuna hakim olma çabasına girişmekteyiz.Bu en azından benim için şahsen böyle bir düşüncedir.Bu yazımızda C# 6.0 ile gelen Auto Property Initializers özelliğine değineceğiz.Bu yazımızdan da anlaşılacağı gibi ilerideki yazılarımızda göstereceğimiz tekniklerle zamanla OOP(Object Oriented Programming) diline orta seviyede hakim bir kişinin bildiği yapıları bile temel seviyede bilgi haznesine sahip kişilerin rahatça anlayıp algılayabileceklerini ve dilin ne kadar esnek ve okunaklı bir yapıya büründüğünü görüyor ve tekniklerle de biz yazılımcıların işlerinin ne kadar profesyonel ve standart bir yapıya büründüğünü gözlemliyoruz.

Auto Property Initializers Özelliği Nedir?

Sınıf içerisinde kullandığımız Property değişken yapılarına ilk değeri verme özelliğidir.Bu ifadenin nasıl kullanıldığına birazdan değineceğiz lakin bu kullanımın teorik yanı oluşturulan Property’nin tanımı ve bu Property’e arka plan alanları(Backing Field) dediğimiz ilk değerin verilmesini sağlamaktadır.

Örneklendirelim

Visual Studio ile bir proje oluşturalım.Lakin C# 6.0 ile gelen yenilikleri kullanabilmek için oluşturacağınız projenin Framework’ünün en az 4.6 olmasına dikkat ediniz.

Projemizde “InsanEntity.cs” isimli bir sınıf oluşturalım ve bu sınıfa “Adi”, “Soyadi” ve “Yasi” isimli iki adet property ekleyelim.

    class InsanEntity
    {
        public string Adi { get; set; }
        public string Soyadi { get; set; }
        public int Yasi { get; set; }
    }

Bu şekilde kullanım propertylerin en temel ifadelerinden birisidir.Şimdi Auto Property Initializers özelliği ile bu propertylerimize ilk değerlerini verelim.

    class InsanEntity
    {
        public string Adi { get; set; } = "Gençay";
        public string Soyadi { get; set; } = "Yıldız";
        public int Yasi { get; set; } = 23;
    }

Gördüğünüz gibi propertyler tanımlandıkları esnada ilk değerlerini Auto Property Initializers özelliği ile bu şekilde verebiliyoruz.

        static void Main(string[] args)
        {
            InsanEntity Insan = new InsanEntity();
            Console.Write("Adı : " + Insan.Adi + "\nSoyadı : " + Insan.Soyadi + "\nYaşı : " + Insan.Yasi );
            Console.Read();
        }

Projemizin en son çalıştırlıp derlenmiş halinin ekran görüntüsü aşağıdaki gibidir.
C# 6.0 - Auto Property Initializers

Peki, property read only(yalnız okunabilir) ise bu özelliği kullanabilir miyiz?
Hemen deneyelim…

    class InsanEntity
    {
        public string Adi { get; set; } = "Gençay";
        public string Soyadi { get; set; } = "Yıldız";
        public int Yasi { get; set; } = 23;

        public string Cinsiyeti { get; } = "Erkek";
    }

Gördüğünüz gibi “InsanEntity.cs” isimli sınıfımıza “Cinsiyeti” isimli bir read only property ekledik ve Auto Property Initializers özelliği ile bu propretye değerini verdik.

        static void Main(string[] args)
        {
            InsanEntity Insan = new InsanEntity();
            Console.Write("Adı : " + Insan.Adi + "\nSoyadı : " + Insan.Soyadi + "\nYaşı : " + Insan.Yasi + "\nCinsiyeti : " + Insan.Cinsiyeti);
            Console.Read();
        }

Bakalım projeyi derlerken hata alacak mıyız?
C# 6.0 - Auto Property Initializers - 2

Gördüğünüz gibi read onyl olan propertylere bile ilk değerlerini bu özellik sayesinde atayabiliyoruz.

Ek olarak şunu belirtmek isterim ki, Auto Property Initializers özelliğini kullanırken, ilgili sınıfın Constructor metodu içerisinde propertylere verdiğimiz değerleri atamaktadır.Tabi bu işlem arka planda gerçekleşmekte ve performans açısından oldukça fayda göstermektedir.

Bol bol faydalanmanız dileğiyle…
İyi çalışmalar dilerim…

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. 18 Kasım 2020

    […] propertyler sadece get olduklarından dolayı ya tanımlandıkları anda (bknz : C# 6.0 – Auto Property Initializers) ya da sadece contructor’dan değer alabilmektedirler. Aksi taktirde bu propertylere başka […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*