Console.WriteLine("Конструирование класса ClassA");

}

}

namespace NS2 { // вложенное пространство имен class ClassB {

public ClassB ()    {

Console.WriteLine("Конструирование класса ClassB");

}

}

}

}

class NestedNSDemo { static void Main() {    .

NSl.ClassA a = new NS1.ClassA();

// NS2.ClassB b = new NS2.ClassB (); // Неверно!!! Пространство NS2 невидимо NS1.NS2.ClassB b = new NS1.NS2.ClassB(); // Верно!

}

}

Выполнение этой программы дает следующий результат.

Конструирование класса ClassA Конструирование класса ClassB

В этой программе пространство именNS2вложено в пространство именNS1.Поэтому для обращения к классуClassBнеобходимо дополнительно указать пространства именNS1иNS2.Указания одного лишь пространства именNS2для этого недостаточно. Как следует из приведенного выше примера, пространства имен дополнительно указываются через точку. Следовательно, для обращения к классуClassBв методеMain() необходимо указать его полное имя —NSl.NS2.ClassB.

Пространства имен могут быть вложенными больше, чем на два уровня. В этом случае член вложенного пространства имен должен быть дополнительно определен с помощью всех охватывающих пространств имен.

Вложенные пространства имен можно указать в одном оператореnamespace,разделив их точкой. Например, вложенные пространства имен

namespace OuterNS { namespace InnerNS {

// ...

}

}

могут быть указаны следующим образом.

namespace OuterNS.InnerNS {

П...

}

Глобальное пространство имен

Если впрограмме не объявлено пространство имен, то по умолчанию используется глобальное пространство имен. Именно поэтому в примерах программ, представленных в предыдущих главах книги, не нужно было обращаться для этой цели к ключевому словуnamespace.Глобальное пространство удобно для коротких программ, как в примерах из этой книги, но в большинстве случаев реальный код содержится в объявляемом пространстве имен. Главная причина инкапсуляции кода в объявляемом пространстве имен — предотвращение конфликтов имен. Пространства имен служат дополнительным средством, помогающим улучшить организацию программ и приспособить их к работе в сложной среде с современной сетевой структурой.

Применение описателя псевдонима пространства имен ::

Пространства имен помогают предотвратить конфликты имен, но не устранить их полностью. Такой конфликт может, в частности, произойти, когда одно и то же имя

Перейти на страницу:

Похожие книги