Директива #using и оператор using
Директива #using делает доступной для компилятора информацию о типах, содержащуюся в сборке. Сборка содержит метаданные (описание информации о типах) и код на промежуточном языке IL. C6opKamscorlib.dll содержит описания многих полезных стандартных классов, определенных в .NET Framework, в том числе класса Console (Консоль), использовавшегося в предыдущем примере, и класса Object (Объект), который является базовым для всех управляемых классов.
Добавим, что директива #using совершенно не похожа на директиву #include, вставляющую в компилируемый файл некоторый другой исходный файл. Как отмечено выше, директива #using скорее напоминает по совершаемым действиям директиву #import.
В предыдущем примере System (Системное пространство имен) представляет пространство имен C++, прямо соответствующее пространству имен .NET, имеющему то же название. Полное название класса состоит из названия пространства имен, за которым следуют два двоеточия и название класса, например, System::Console (Система::Консоль) Хотя выражение using namespace, в предыдущем примере не используется, оно позволяет использовать короткие имена классов, например, Console (Консоль).
Обратим ваше внимание на то, что выражение using namespace (определенное стандартом ANSI C++) и директива #using (определенная в Microsoft C++) – совершенно разные вещи. Приведем пример использования выражения using namespace, позволяющего заменить полное имя System::Console (Система::Консоль) укороченным Console (Консоль):
//HelloKorld.cpp fusing <rrscorlib.dll> using namespace System; // использовать пространство имен Система; // этот оператор позволяет использовать короткие имена классов void main(void) { Console::WriteLine("Hello World"); // "Привет, Мир" // пространство имен опущено }