Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 27

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 21 22 23 24 25 26 < 27 > 28 29 30 31 32 33 .. 404 >> Следующая


Например:

namesp :е LevelOne •

I

II профвмма, находящаяся в пространстве имен bevelOne // в ней описывается имя 'NameOne*

)

II программа, находящаяся в глобальном пространстве имен

В этой программе описывается единственное пространство имен — LevelOne. (Обратите внимание, что в данном случае в программе не содержится никакого исполняемого кода. Это сделано для того, чтобы придать обсуждению максимально общий характер; напротив, в код помещен комментарий, в котором содержится это описание.) Код, содержащийся внутри пространства имен LevelOne, может просто ссылаться на имя NameOne, и никакой классификации не требуется. Однако в коде, находящемся в глобальном пространстве имен, необходимо использовать классифицированное ИМЯ LevelOne.NameOne ДЛЯ ТОГО, Чтобы ИЭ НеГО СОСЛЭТЬСЯ.

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

namespace LevelOne

(

// программа, находящаяся i тростронст; мен LevelOne

namespace Levi Two (

// программа, находящаяся в пространстве имен LevelOne.LevelTwo П в ней описывается имя 'NameTwo'

}

)

П программа, находящаяся s. глобальном пространстве имен
Переменные и выражения___________________________________________________________________________43

В данном случае обращение к имени NameTwo нз глобального пространства имен ДОЛЖНО иметь ВИД LevelOne.LevelTwo.NameTwo, ИЗ пространства нмен LevelOne — LevelTwo.NameTwo, а НЗ пространства имен LevelOne.LevelTwo — NameTwo,

Здесь нужно отметить, что имена идентифицируются пространствами нмен уникальным образом. Мы можем описать одно и то же имя 'NameThree' как в пространстве нмен LevelOne, так и в пространстве имен LevelTwo:

namespace LevelOne (

Н здесь описывается имя 'NameThree'

namespace LevelTwo -

t

H здесь описывается имя 'NameThree*

)

В данном случае описаны два разных имени, которые могут использоваться независимо друг ОТ друга — LevelOne.NameThree H LevelOne.LevelTwo.NameThree,

После того, как пространство нмен определено, появляется возможность использовать оператор using для упрощения доступа к содержащимся в нем именам. Оператор using как бы говорит: “Да, нам действительно понадобится доступ к именам из данного пространства имен, поэтому не заставляйте меня классифицировать их каждый раз". Например, в следующей программе предполагается, что код, находящийся в пространстве нмен LevelOne, должен иметь доступ к именам пространства нмен LevelOne.LevelTwo без какой бы то ни было классификации:

namespace LevelOne

I

using LevelTwo;

namespace LevelTwo

(

// здесь описывается имя 'NameTwo'

)

)

Код, находящийся в пространстве имен LevelOne, теперь может обращаться К LevelTwo. NameTwo ПрОСТО как К NameTwo.

Бывают случаи, как в примере с NameThree, когда такой подход может приводить к конфликту между именами, находящимися в различных пространствах имен (при этом код, скорее всего, компилироваться не будет), В подобных случаях мы можем задать для пространства имен подставное имя (alias) в операторе using:

пагасэрасе LevelOne { ’

' using LT = LevelTwo;

П здесь описывается имя 'Nawvhree'

namespace Level' о

(

/ f здесь описывается имя 'NameThree*

)

)

Тогда В пространстве имеи LevelOne МЫ сможем обращаться К LevelOne.NameThree ПрОСТО как К NameThree, а К LevelOne,LevelTwo,NameThree как К LT,NameThree,
44 Глава 3

Операторы using оказывают влияние на то пространство нмен, в котором онн находятся, а также на все вложенные пространства имен, которые могут содержаться в данном пространстве нмен, В вышеприведенном коде в глобальном пространстве нмен использовать LT.NameThree нельзя. Однако еСЛИ оператор using расположить следующим образом:

using LT ¦ LevelOne.LevelTwo; namespace LevelOne -

{

П здесь описывается имя 'NameThree' . namespace LevelTwo .

{

// здесь описьт : имя 'NameThree'

)

то использовать имя *lt.NameThree' можно будет и из глобального пространства нмен, и из пространства нмен LevelOne.

Существует еще одни немаловажный момент, на который следует обратить внимание. Оператор using сам по себе не обеспечивает доступа к именам, находящимся в других пространствах имен. До тех пор, пока код нз пространства имен не будет каким-либо способом привязан к нашему проекту (например, описан в исходном файле проекта нлн описан в каком-либо коде), привязанному к этому проекту, мы не получим доступа к содержащимся в нем именам. Более того, если код, в котором содержится некое пространство нмен, привязан к нашему проекту, то мы обладаем доступом к содержащимся в нем именам независимо от использования оператора using. Оператор using всего лишь упрощает обращение к этим именам н позволяет сократить сильно удлиняющийся в противном случае код, делая его более понятным.
Предыдущая << 1 .. 21 22 23 24 25 26 < 27 > 28 29 30 31 32 33 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.