C # - Пространства имен

А namespaceпредназначен для обеспечения возможности отделения одного набора имен от другого. Имена классов, объявленные в одном пространстве имен, не конфликтуют с такими же именами классов, объявленными в другом.

Определение пространства имен

Определение пространства имен начинается с ключевого слова namespace за которым следует имя пространства имен следующим образом -

namespace namespace_name {
   // code declarations
}

Чтобы вызвать версию функции или переменной с включенным пространством имен, добавьте имя пространства имен следующим образом:

namespace_name.item_name;

Следующая программа демонстрирует использование пространств имен -

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();
   }
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Inside first_space
Inside second_space

Использование ключевого слова

В usingКлючевое слово указывает, что программа использует имена в данном пространстве имен. Например, мы используемSystemпространство имен в наших программах. Там определяется класс Console. Мы просто пишем -

Console.WriteLine ("Hello there");

Мы могли бы записать полное имя как -

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

Вы также можете избежать добавления пространств имен с помощью usingдиректива пространства имен. Эта директива сообщает компилятору, что последующий код использует имена в указанном пространстве имен. Таким образом, пространство имен подразумевается для следующего кода -

Давайте перепишем наш предыдущий пример с помощью директивы -

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();
   }
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Inside first_space
Inside second_space

Вложенные пространства имен

Вы можете определить одно пространство имен внутри другого пространства имен следующим образом:

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

Вы можете получить доступ к членам вложенного пространства имен с помощью оператора точка (.) Следующим образом:

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();
   }
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Inside first_space
Inside second_space