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

C# 7.1 – Default Literals Özelliği

Merhaba,

Hatırlarsanız C#’ta kullandığımız yapılar içerisinde değersel açıdan elimizdeki tiplerin varsayılan değerlerini default keywordüyle elde edebilmekteyiz. C# 7.1 sürümü öncesine kadar default keywordünü hangi tipe özel olarak kullanacağımızı belirtmek zorundaydık lakin C# 7.1 sürümüyle bu zorunluluk ortadan kalkmış bulunmakta ve compiler varsayılan değerini istediğimiz tipi tahmin etmektedir.

Peki bu işlem nasıl gerçekleşmektedir? sorusuna gelmeden önce default keywordünü aşağıda programatik olarak ele alalım.

    class Program
    {
        static void Main(string[] args)
        {
            Metod(default(string), default(int), default(SqlConnection));
            Console.Read();
        }
        public static void Metod(string a, int b, SqlConnection c)
        {
            //İşlemler...
        }
    }

Yukarıdaki kod bloğunu incelerseniz eğer “Metod” isimli metodun parametrelerine ilgili tiplerin varsayılan değerlerini default keywordü ile göndermekteyiz. C# 7.1 versiyonundan önce bu şekilde ilgili parametreye değeri gönderirken default komutuna hangi tipin değerini istediğimizi belirtmek zorundaydık.

“Ne olacak canım! o kadar da manuel belirtelim elimize mi yapışır?” dediğinizi duyar gibiyim. O halde aşağıdaki metodu ele alalım.

        public static void Metod(string a, int b, Func<string, Func<SqlCommand, Func<int, bool, SqlCommand>, bool>, int> c)
        {
            //İşlemler...
        }

Gördüğünüz gibi bu metotta parametremiz “Func<string, Func<SqlCommand, Func<int, bool, SqlCommand>, bool>, int>” şeklinde tanımlanmıştır 🙂 Tamam biraz abartı olabilir ama olur mu olur programlama dünyası 😉 Bu tarz durumlarda ilgili parametrenin default değerini isterken yeniden aynı şekilde tanımlamak için halı dokur gibi bir zahmete katlanmanın ne manası var 🙂

        static void Main(string[] args)
        {
            Metod(default(string), default(int), default(Func<string, Func<SqlCommand, Func<int, bool, SqlCommand>, bool>, int>));
            Console.Read();
        }

Oppsss  😯

İşte C# 7.1 ile default komutana gelen yenilikle bu tarz parametrik durumlarda varsayılan değerlerini talep ettiğimiz tipleri belirtme gereği duymadan direkt olarak istekte bulunabiliyoruz.

-- C# 7.1 Farkıyla --
    class Program
    {
        static void Main(string[] args)
        {
            Metod(default, default, default);
            Console.Read();
        }
        public static void Metod(string a, int b, Func<string, Func<SqlCommand, Func<int, bool, SqlCommand>, bool>, int> c)
        {
            //İşlemler...
        }
    }

Burada compiler, default değerinin verildiği parametrenin tipini tahmin etmekte ve arkaplanda default(T) şeklinde bir işlevsellik göstermektedir. Tipi tahmin edemediği durumlarda sizden manuel olarak talep edecektir.

Ayrıca şunu bilmenizi isterim ki, programlama dünyasında dillerin gelişimi pratik ve işlevsel olarak tek kullanımda çok fonksiyonellik üzerine doğru bir eğilim göstermektedir. Haliyle bu basit gelebilecek hatta önemsenmeyecek gibi gözüken yenilik aslında bu dilin edebiyatını yapanlar için doğru bir imla getirmekte ve dilin esneklik ve zenginliğine kafiye tadında bir ilerleme kazandırmaktadır.

Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir