В главе 2 говорится, что библиотеки классов .NET Framework образуют иерархическую структуру пространств имен (namespaces). Это может привести к довольно длинным именам, если требуемый класс или тип имеет очень большую глубину вложения. Чтобы сократить ввод длинных имен, в С# введена директива
using.
Посмотрим работу этой директивы на примере. В нашем приложении "Hello, World" есть такая строка:
System.Console.WriteLine("Hello, World");
Ввод такого текста несложен, а представьте, что у вас большое приложение с обширным набором типов и классов. Директива
using
позволяет компилятору найти непонятный ему элемент, просматривая указанное пространство имен. В нашем примере директива
using
используется так:
using System;
class HelloWorld {
public static void MainQ
{
Console.WriteLine("Hello, World");
} }
В ходе синтаксического анализа метода
Console. WriteLine
компилятор установит, что этот метод не описан. Поэтому он примется просматривать пространства имен, заданные директивой
using,
и, найдя описание метода в пространстве имен
System,
завершит компиляцию кода без ошибок.
Заметьте: директива
using
применима к пространствам имен, но не к классам. В нашем примере
System
является пространством имен,
Console —
классом, a
WriteLine —
статическим методом класса
Console.
Поэтому такой код неверен:
using System.Console; //ОШИБКА. Нельзя использовать
//директиву using по отношению к классу.
class HelloWorld {
public static void MainQ
{
WriteLineC'Hello, World");
} }
Указывать класс в директиве
using
нельзя, но существует вариант директивы
using,
позволяющий создать псевдоним для класса:
using
псевдоним = класс
Благодаря этой форме директивы
using
можно написать подобный код: using output = System.Console;
class HelloWorld {
public static void MainQ
{
output.WriteLine("Hello, World");
} }
Благодаря такому гибкому инструменту вы сможете, применяя выразительные псевдонимы для классов с несколькими уровнями вложения в иерархии .NET, сделать свой код немного легче и для написания, и для сопровождения.