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