C# 6.0 – Static Using(Members)

Yazılım dillerinin önemli yapılarından birisi olan static üyeler, yazılımsal açıdan her ne kadar biz programcılara kolaylık sağlasada, .NET mimarlarıda bu üyelerin kullanılışınıda yazısal açıdan daha kolay hale getirmişlerdir.Biliyorsunuz ki, bir sınıfın nesnesini üretmeye gerek kalmaksızın içinde bulunan static yapılara, ilgili sınıfın ismi üzerinden ulaşabiliyorduk.C# 6.0 ile Static Using yeniliği gelerek bu işlemi daha esnek hale getirmiştir.Şimdi gelin bu yeniliği ifşa edelim.

namespace StaticMethod
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Static yapıların kullanımı...");
        }
    }
}

Yukarıda Console.Write() metodunu örnek alalım.Static yapıdaki Write() metodunu kullanabilmek için Console sınıfından .(nokta) ile çağırabiliyoruz.

using static System.Console;

namespace StaticMethod
{
    class Program
    {
        static void Main(string[] args)
        {
            Write("Static yapıların kullanımı...");
        }
    }
}

Şimdi dikkat ederseniz eğer, “using static System.Console” komutu ile System.Console sınıfı içerisindeki static yapılara ilgili sınıf ismini kullanmaksızın ulaşabileceğimizi belirtiyoruz.Gördüğünüz gibi static yapıdaki Write metodunu sınıf ismini kullanmaya gerek kalmadan çağırabildik.

Şimdi ise kendi örnek sınıfımızla bu yapıyı deneyelim.

using static System.Console;

namespace StaticMethod
{
    class OrnekSinif
    {
        public static void Merhaba()
        {
            Write("Merhaba");
            Read();
        }
    }
}

Yukarıdaki kod bloğunu incelerseniz eğer OrnekSinif isminde bir sınıf oluşturduk ve içine Merhaba isminde de bir static metod yazdık.Dikkat ederseniz eğer Merhaba isimli static metodu Write metodu ile “Merhaba” verisini ekrana yazdırırken, Read metoduyla da ekranı açık tutmaktadır ve bu metodlar Static Using ile ilgili sınıflarının isimleri olmaksızın çağrılmıştır.

namespace StaticMethod
{
    class Program
    {
        static void Main(string[] args)
        {
            OrnekSinif.Merhaba();
        }
    }
}

OrnekSinif isimli sınıfımızdan Merhaba metodu yukarıdaki şekilde çağrılabileceği gibi, aşağıdaki şekilde de çağırabiliriz.

using static StaticMethod.OrnekSinif;

namespace StaticMethod
{
    class Program
    {
        static void Main(string[] args)
        {
            Merhaba();
        }
    }
}

Oluşturduğunuz özel sınıfların static olup olmaması fark etmeyecektir.

Evet, gördüğünüz gibi Static Using’in espirisi budur.

Peki Extension Metod(Genişletme Metodu)’unda durum ne oluyor?

namespace StaticMethod
{
    static class OrnekSinif
    {
        public static void Yaz(this string metin)
        {
            metin += "Gençay Yıldız";
            Write(metin);
            Read();
        }
    }
}

OrnekSinif isimli sınıfımızı static yaparak içine bir Yaz isminde Extension Metod oluşturdum.

using static StaticMethod.OrnekSinif;

namespace StaticMethod
{
    class Program
    {
        static void Main(string[] args)
        {
            OrnekSinif.Yaz("");
        }
    }
}

Öncelikle Yaz isimli Extension Metodumuzu bu şekilde çağırabileceğimizi hepiniz biliyorsunuz…
Amaa…
Static Using
şeklinde bir çağrı mümkün değildir.

Yaz metodumuz bir Extension Metod yani Genişleme Metodu olduğu için oluşturuldukları tipteki değerlerde çağrılmadıkları sürece tek başlarına çağırmak yapılarına ters olacaktır.Lakin direkt olarak sınıf üzerinden ulaşım imkanımızın olması static bir metod özelliği olmalarından kaynaklanmaktadır.Aksi halde sınıf ismi verilmediği sürece Extension Metodlara oluşturuldukları değerler üzerinden hariç başka bir yerden ulaşmak mümkün değildir.

Gün geçtikçe güncellenen .NET yapıları ve deniz derya C# üzerine 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

*