Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

C# 9.0 – Target-Typed New Expressions

Merhaba,

C# 9.0 sürümünde, nesne oluşum süreçlerinde semantik açıdan inanılmaz kolaylık sağlayan Target-Typed New Expressions özelliğini duyurmuştur. Bu özellik, new operatörü ile türü bilinen bir class’tan nesne yahut bir struct’tan değer üretilirken constructor çağrımı esnasında yeniden tip belirtilmesine gerek kalmaksızın kodu inşa etmemizi sağlamakta ve özellikle generic türlerde biz developer’lara oldukça kolay kodlama imkanı sağlamaktadır.

Misal;

    class MyClass { }
    struct MyStruct { }
    record MyRecord { }

şeklinde tasarlanan veri modellerinden nesne ve değer üretebilmek için;

            MyClass myClass = new MyClass();
            MyStruct myStruct = new MyStruct();
            MyRecord record = new MyRecord();

şeklinde çalışmamız gerekmekteydi.

Dikkat ederseniz burada üretilecek nesne yahut değer, işaretleneceği referansın türü sayesinde bilinmekte ve böylece aynı türün tekrar constructer yanında belirtilmesi lüzumsuz bir kod maliyetine sebebiyet vermektedir.

Type type = new Type();

Tabi ki de polimorfizm nimetinden faydalanıp hiyerarşik bir modelleme yapılmadığı ve direkt referans türüne karşılık aynı türde bir nesne veya değer tutulduğu sürece buradaki türün new operatörü eşliğinde belirtilmesi bizler açısından maliyet olarak yorumlanmaktadır.

Dolayısıyla C# 9.0 ile gelen target-typed new expressions özelliği ile bu veri modellerinden aşağıdaki gibi new ile nesne ve değerler üretilebilmektedir.

            MyClass myClass = new();
            MyStruct myStruct = new();
            MyRecord record = new();
Type type = new();

Hakeza aşağıdaki gibi bir generic modelden nesne üretilmeye çalışıldığında yahut generic bir koleksiyon kullanıldığında çektiğimiz çileyi ne kadar kolaylaştırdığına hep beraber şahit olmaktayız.

Eski;

            MyClass<string> myClass = new MyClass<string>();
            List<string> lists = new List<string>();
            Dictionary<int, char> keyValuePairs = new Dictionary<int, char>();

Yeni;

            MyClass<string> myClass = new();
            List<string> lists = new();
            Dictionary<int, char> keyValuePairs = new();

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

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

*