Пространство имен предназначено для обеспечения способа отделить один набор имен от другого. Имена классов, объявленные в одном пространстве имен, не конфликтуют с теми же именами классов, объявленными в другом.
Определение пространства имен
Определение пространства имен начинается с ключевого слова 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 namespace. Эта директива сообщает компилятору, что последующий код использует имена в указанном пространстве имен. Таким образом, пространство имен подразумевается для следующего кода:
Давайте перепишем наш предыдущий пример с использованием директивы —
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(); } }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —