C # - Ad alanları

Bir namespacebir isim kümesini diğerinden ayrı tutmanın bir yolunu sağlamak için tasarlanmıştır. Bir ad alanında bildirilen sınıf adları, başka bir ad alanında bildirilen aynı sınıf adlarıyla çakışmaz.

Bir Ad Alanı Tanımlama

Bir ad alanı tanımı anahtar kelimeyle başlar namespace ardından aşağıdaki ad alanı adı gelir -

namespace namespace_name {
   // code declarations
}

İşlev veya değişkenin ad alanı etkin sürümünü çağırmak için ad alanı adını aşağıdaki gibi ekleyin -

namespace_name.item_name;

Aşağıdaki program ad alanlarının kullanımını gösterir -

using System;

namespace first_space {
   class namespace_cl {
      public void func() {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space {
   class namespace_cl {
      public void func() {
         Console.WriteLine("Inside second_space");
      }
   }
}
class TestClass {
   static void Main(string[] args) {
      first_space.namespace_cl fc = new first_space.namespace_cl();
      second_space.namespace_cl sc = new second_space.namespace_cl();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Inside first_space
Inside second_space

kullanarak Kelimeler

usinganahtar kelime, programın verilen ad alanındaki adları kullandığını belirtir. Örneğin, kullanıyoruzSystemprogramlarımızdaki ad alanı. Konsol sınıfı burada tanımlanır. Biz sadece yazıyoruz -

Console.WriteLine ("Hello there");

Tam olarak nitelendirilmiş adı şu şekilde yazabilirdik -

System.Console.WriteLine("Hello there");

Ayrıca ad alanlarının önceden eklenmesini önleyebilirsiniz. usingad alanı yönergesi. Bu yönerge, derleyiciye sonraki kodun belirtilen ad alanındaki isimleri kullandığını söyler. Ad alanı bu nedenle aşağıdaki kod için belirtilmiştir -

Direktif kullanarak önceki örneğimizi yeniden yazalım -

using System;
using first_space;
using second_space;

namespace first_space {
   class abc {
      public void func() {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space {
   class efg {
      public void func() {
         Console.WriteLine("Inside second_space");
      }
   }
}   
class TestClass {
   static void Main(string[] args) {
      abc fc = new abc();
      efg sc = new efg();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Inside first_space
Inside second_space

İç içe geçmiş ad alanları

Bir ad alanını başka bir ad alanı içinde aşağıdaki gibi tanımlayabilirsiniz -

namespace namespace_name1 {
   
   // code declarations
   namespace namespace_name2 {
      // code declarations
   }
}

Aşağıdaki gibi nokta (.) Operatörünü kullanarak yuvalanmış ad alanı üyelerine erişebilirsiniz -

using System;
using first_space;
using first_space.second_space;

namespace first_space {
   class abc {
      public void func() {
         Console.WriteLine("Inside first_space");
      }
   }
   namespace second_space {
      class efg {
         public void func() {
            Console.WriteLine("Inside second_space");
         }
      }
   }   
}
class TestClass {
   static void Main(string[] args) {
      abc fc = new abc();
      efg sc = new efg();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Inside first_space
Inside second_space