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

C# 6.0 nameof Expressions

Merhaba,

Kod yazarken class tiplerini yahut metod, property veya field isimlerini string olarak ifade etmemiz gereken noktalar olabilir. İşte böyle durumlar için geliştirilmiş olan C# 6.0 ile gelen nameof keywordüne değineceğiz.

C# 6.0 nameof Expressions

Örnek olarak ArgumentNullException sınıfını ele alabiliriz. Bu sınıftan bir nesne oluştururken constructerında “paramName” isimli parametre ile, kontrol edilen parametrenin ismini string olarak vermekteyiz.

Benzer şekilde,

C# 6.0 nameof Expressions

INotifyPropertyChanged interfaceini ele alırsak eğer olayın tetiklenme esnasında ilgili propertynin adını yukarıda gördüğünüz gibi string olarak almaktadır.

İşte bu tarz örnek olaylara benzer durumlarda ilgili property, metod, class, field, parametre yahut değişken(ki artık hangi elemanın ismini string belirtmemiz gerektiren durumsa) ismi değiştiğinde string olarak belirtilen ifadenin içerisindeki isim değişmeyeceğinden dolayı hatayla karşılaşacağız.

C# 6.0 ile gelen nameof anahtar sözcüğü ile ilgili memberların hardcoded isimlerini kullanma zorunluluğunu ortadan kaldırdığı için bu olası durumda bir memberın ismi değişirse o membera bağlı nameof tanımlamarı derleyici hatalarını verecek ve biz yazılımcıları samanlıkta iğne aramaktan kurtacaktır.

C# 6.0 nameof Expressions

Gördüğünüz gibi eski kullanım tarzında string ifade içerisindeki hardcoded olarak tutulan member ismini unutma olasılığından olası hatayı alma oranımız yüksekken,

C# 6.0 nameof Expressions

nameof anahtar sözcüğü sayesinde değişen member ismi anında editör aracılığıyla değiştirilebilmektedir. Editör kullanarak değiştirmesenizde derleyici hatası size anında ilgili hatayı gösterecektir.

Compiler nameof keywordünü gördüğü yerlerde ilgili ismi hardcoded ediyor ve ilgili noktaya string olarak basıyor. Bu mantıkta aşağıdaki kod bloğu örnek teşkil etmektedir.

    class OrnekClass
    {
        public string OrnekField;
        public decimal OrnekField2;
        public int OrnekProperty { get; set; }
        public bool OrnekProperty2 { get; set; }
        public void OrnekMetod() { }
        public int OrnekMetod2() => 1;
    }

    class Program
    {
        static void Main(string[] args)
        {
            OrnekClass o = new OrnekClass();
            Console.WriteLine(nameof(o));
            Console.WriteLine(nameof(o.OrnekField));
            Console.WriteLine(nameof(o.OrnekField2));
            Console.WriteLine(nameof(o.OrnekProperty));
            Console.WriteLine(nameof(o.OrnekProperty2));
            Console.WriteLine(nameof(o.OrnekMetod));
            Console.WriteLine(nameof(o.OrnekMetod2));
        
            Console.Read();
        }
    }

C# 6.0 nameof Expressions

nameof anahtar sözcüğü her ne kadar ufak bir işlev gibi gözüksede biz yazılımcılar için olası hatalı kodlardan kurtarmakta ve C# dilini kullanışlılık açısından bir adım daha ileri taşımaktadır.

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.