Программирование >>  Обработка исключительных ситуаций 

1 ... 91 92 93 [ 94 ] 95 96 97 ... 142


Пространства имен

относящиеся к сборке, должны располагаться непосредственно после директив using, например:

using System;

[assembly:CLSCompliant(true)] namespace ConsoleApplicationl { ...

Атрибут [CLSCompliant] определяет, удовлетворяет программный код соглашениям CLS (Common Language Specification) или нет.

Стандартные атрибуты, как и другие типы классов, имеют набор конструкторов, которые определяют, каким образом использовать (специфицировать) атрибут. Фактически, при использовании атрибута указывается наиболее подходящий конструктор, а величины, не указанные в конструкторе, задаются через именованные параметры в конце списка параметров.

Стандартный атрибут [STAThread], старательно удаленный из всех листингов в этой книге, относится к методу, перед которым он записан. Он имеет значение только для приложений, использующих модель СОМ, и задает модель потоков в рамках модели СОМ. Пример применения еще одного стандартного атрибута, [ Conditional!, приведен далее в разделе Директивы препроцессора .

Атрибуты уровня сборки хранятся в файле Assemblylnfo.cs, автоматически создаваемом средой для любого проекта. Для явного задания номера версии сборки можно записать атрибут [AssemblyVersion], например:

[assembly: AssemblyVersion( 1.0.0.0 )]

Создание пользовательских атрибутов выходит за рамки темы этого учебника. Интересующиеся могут обратиться к книге [27].

Пространства имен

Пространство имен - это контейнер для типов, определяющий область их видимости. Пространства имен предотвращают конфликты имен и используются для двух взаимосвязанных целей:

логического группирования элементов программы, расположенных в различных физических файлах;

группирования имен, предоставляемых сборкой в пользование другим модулям.

Во всех программах, созданных ранее, использовалось пространство имен, создаваемое по умолчанию. Реальные программы чаще всего разрабатываются группой программистов, каждый из которых работает со своим набором физических файлов (единиц компиляции), хранящих элементы создаваемого приложения. Если в разных файлах описать пространства имен с одним и тем же именем, то при построении приложения, состоящего из этих файлов, будет скомпоновано единое пространство имен.



Вложенные пространства имен, как вы наверняка успели заметить, широко применяются в библиотеке .NET.

Существует три способа использования типа, определенного в каком-либо пространстве имен:

1. Использовать полностью квалифицированное имя. Например, в пространстве имен System.Runtime.Serialization.Formatters.Binary описан класс BinaryFormatter. Создание объекта этого класса с помощью квалифицированного имени выглядит так:

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Seri ali zati on.Formatters.Bi nary.Bi naryFormatter();

2. Использовать директиву using, с помощью которой импортируются все имен; из заданного пространства. В этом случае предыдущий пример примет ви,

using System.Runtime.Serialization.Formatters.Binary;

BinaryFormatter bf = new BinaryFormatterO;

ВНИМАНИЕ-

Директива using должна располагаться вне или внутри пространства имен, но ; любых описаний типов.

3. Использовать псевдоним типа. Это делается с помощью второй формы дире тивы using:

using BinF =

System.Runtime.Seri ali zati on.Formatters.Bi nary.Bi naryFormatter;

BinF bf .= new BinFO;

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

Пространства имей могут быть вложенными, например:

namespace State

namespace City { ...

Такое объявление аналогично следующему: namespace State.City



пользование псевдонима для пространства имен гарантирует, что последую-(е подключения других пространств имен к этой сборке не повлияют на суще-дующие определения. Слева от операции :: можно указать идентификатор )bal. Он гарантирует, что поиск идентификатора, расположенного справа от ерации, будет выполняться только в глобальном пространстве имен. Цель пользования этого идентификатора та же: не допустить изменений существую-та определений при разработке следующих версий программы, в которых в нее пут быть добавлены новые пространства имен, содержащие элементы с такими ; именами.

жим образом, сборки обеспечивают физическое группирование типов, а про-ранства имен - логическое. В мире сетевого программирования, когда про-)аммисту доступны десятки тысяч классов, пространства имен совершенно юбходимы как для классификации и поиска, так и для предотвращения кон-ликтов имен типов.

Директивы препроцессора

репроцессором в языке С + + называется предварительный этап компиляции, ормирующий окончательный вариант текста программы. В языке С#, потомке -++, препроцессор практически отсутствует, но некоторые директивы сохрани-ись. Назначение директив - исключать из процесса компиляции фрагменты ода при выполнении определенных условий, выводить сообщения об ошибках предупреждения, а также структурировать код программы.

каждая директива располагается на отдельной строке и не заканчивается точкой запятой, в отличие от операторов языка. В одной строке с директивой может /асполагаться только комментарий вида . Перечень и краткое описание дирек-ив приведены в табл. 12.4.

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

ерсию языка С# 2.0 введена возможность применять псевдоним пространст-шен с помощью операции ::, например:

тд SI0 = System.10: псевдоним пространства иен

ig MIO = MyLibrary.IO; псевдоним пространства иен

ss Program

static void MainO {

SI0::Stream s = new MIO: .-Emp St ream О; использование псевдонимов



1 ... 91 92 93 [ 94 ] 95 96 97 ... 142

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика