Объявление пространства имен
Пространство имен объявляется с помощью ключевого слова namespace. Ниже приведена общая форма объявления пространства имен:
namespace имя {
// члены
}
где имя обозначает конкретное имя объявляемого пространства имен. При объявлении пространства имен определяется область его действия. Все, что объявляется непосредственно в этом пространстве, оказывается в пределах его области действия. В пространстве имен можно объявить классы, структуры, делегаты, перечисления, интерфейсы или другие пространства имен.
Ниже приведен пример объявления namespaceдля создания пространства имен Counter. В этом пространстве локализуется имя, используемое для реализации простого класса вычитающего счетчика CountDown.
// Объявить пространство имен для счетчиков.
namespace Counter {
// Простой вычитающий счетчик,
class CountDown {
int val;
public CountDown(int n) {
val = n;
}
public void Reset(int n) {
val = n;
}
public int Count() {
if(val > 0) return val--;
else return 0;
}
}
} // Это конец пространства имен Counter.
Обратите внимание на то, что класс CountDownобъявляется в пределах области действия пространства имен Counter. Для того чтобы проработать этот пример на практике, поместите приведенный выше код в файл Counter.cs.
Ниже приведен пример программы, демонстрирующий применение пространства имен Counter.
// Продемонстрировать применение пространства имен Counter.
using System;
class NSDemo {
static void Main() {
// Обратите внимание на то, как класс CountDown
// определяется с помощью пространства имен Counter.
Counter.CountDown cd1 = new Counter.CountDown(10);
int i;
do {
i = cd1.Count();
Console.Write(i + " ");
} while (i > 0);
Console.WriteLine();
// Еще раз обратите внимание на то, как класс CountDown
// определяется с помощью пространства имен Counter.
Counter.CountDown cd2 = new Counter.CountDown(20);
do {
i = cd2.Count();
Console.Write(i + " ");
} while (i > 0);
Console.WriteLine();
cd2.Reset(4);
do {
i = cd2.Count();
Console.Write(i + " ");
} while (i > 0);
Console.WriteLine() ;
}
}
При выполнении этой программы получается следующий результат.
10 9 8 7 6 5 4 3 2 1 0
20 19 18 17 16 15 14 13 12 11 10 9 8 7 б 5 4 3 2 1 0 4 3 2 1 0
4 3 2 1 0
Для того чтобы скомпилировать эту программу, вы должны включить приведенный выше код в отдельный файл и указать его вместе с упоминавшимся выше файлом, содержащим код объявления пространства имен Counter. Если этот код находится в файле NSDemo.cs, а код объявления пространства имен Counter — в файле Counter.cs, то для компиляции программы используется следующая командная строка.
csc NSDemo.cs counter.cs
Некоторые важные аспекты данной программы заслуживают более пристального внимания. Во-первых, при создании объекта класса CountDownнеобходимо дополнительно определить его имя с помощью пространства имен Counter, как показано ниже. Ведь класс CountDownобъявлен в пространстве имен Counter.
Counter.CountDown cd1 = new Counter.CountDown(10);
Это правило можно обобщить: всякий раз, когда используется член пространства имен, его имя необходимо дополнительно определить с помощью этого пространства имен. В противном случае член пространства имен не будет обнаружен компилятором.
Во-вторых, как только объект типа Counterбудет создан, дополнительно определять его члены с помощью пространства имен уже не придется. Следовательно, метод cd1.Count()может быть вызван непосредственно без дополнительного указания пространства имен, как в приведенной ниже строке кода.
Читать дальше