Принципы объектно-ориентированного программирования

         

Пространства имен и директива using



Пространства имен и директива using

В главе 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, сделать свой код немного легче и для написания, и для сопровождения.



Содержание раздела