C# Namespace Hakkında



Namespace'ler .NET Framework sınıf kütüphanesindeki veri türlerini ve sınıfları kullanabilmemiz için C# dilinde using anahtar sözcüğü ile birlikte kullanılır ve derleyiciye bildirilir.


using System;

public class Hello
{
    public static void Main()
    {
        Console.WriteLine("Merhaba Dünya!");
    }
}

burada görüldüğü gibi System namespace'inin projemize using keywordu ile eklemiş olduk. System'i using ile kodumuza eklememiş olsak Console clasını direk yazamaz bunun yerine System.Console... şeklinde yazmamız gerekirdi. Buda kodumuzun okunurluğunu düşürürdü. İç içe namespace'ler mümkündür(System.Forms gibi). Bunun dışında bizde kendi namespace'lerimizi oluşturup projelerimizde kullanabiliriz.

Namespace import edip kullanırken şöyle bir sorunun çıkması olasıdır :


namespace Turkce
{
    public class Harf
    {
      
    }
}
namespace Ingilizce
{
    public class Harf
    {
      
    }
}

Yukarıda iki namespace tanımı var. Biz projemize bu iki namespace'i tanımlarsak ikisinde de ortak olan Harf sınıfına erişimde hata alacağız.


using System;
using Turkce;
using Ingilizce;

public class Dil
{
    public static void Main()
    {
        Harf harfler = new Harf();
    }
}
bu kod parçası hata vercektir çünkü instance'ı yaratılan Harf sınıfının Turkce mi yoksa Ingilizce mi namespace'ınden geldiğini çözemeyecektir. Bu durumdan kurtulmanın 2 yöntemi vardır. Birinci Yöntem :



using System;
using Turkce;
using Ingilizce;

public class Dil
{
    public static void Main()
    {
        Turkce.Harf() turkceHarf= new Turkce.Harf();
        Ingilizce.Harf() ingilizceHarf= new Ingilizce.Harf();
    }
}

Fakat bu çözüm okunurluğu azalttığı için tavsiye edebileceğim bir çözüm değil bunun yerine :


using System;
using Turkce;
using Ingilizce;

public class Dil
{
    using TurkceHarf= Turkce.Harf;
    using IngilizceHarf= Ingilizce.Harf;
    public static void Main()
    {
        TurkceHarf turkceHarf= new TurkceHarf();
        IngilizceHarf ingilizceHarf= new IngilizceHarf();
    }
}

Takma isim verme yöntemi olan bu yöntem daha kullanışlıdır. Takma isimler ancak ve ancak tanımlanadıkları blok içinde geçerlidir. Başka bloklarda takma adları kullanmak derleme zamanında hataya yol açar.

0 yorum :

Yorum Gönder