Пространства имен
Стандартным контейнером типов в Delphi является модуль (unit). В .NET реализована другая система организации хранения типов — пространства имен.
Необходимость работы с классами .NET потребовала введения в Delphi поддержки пространств имен. В отличие от модулей, пространства имен имеют иерархическую структуру. Наличие иерархии пространства имен позволяет исключить неоднозначность в определении одноименных типов данных.В Delphi 8 файл проекта неявно объявляет новое пространство имен, называемое пространством имен проекта по умолчанию (project default namespace). Например, следующая строка объявляет пространство имен MyProgram:
program MyProgram:
Модуль может иметь пространство имен, вложенное в пространство проекта, или явно объявить собственное пространство имен. Пространство имен модуля объявляется в его заголовке, например, следующий код объявляет пространство имен Myllnit:
unit MyUnit;
Поддержка иерархии пространства имен обеспечивается разделением точкой частей иерархии: unit MyNamespace.MyUnit:
В данном примере объявлено пространство имен MyUnit, вложенное в пространство имен MyNamespace.
При этом файл, в котором сохраняется модуль, будет называться MyNamespace. MyUnit.pas. Глубина иерархии пространства имен не ограничена.По умолчанию, если имя модуля не содержит полного пути иерархии, то он считается вложенным в пространство имен проекта. При этом в имя файла модуля не добавляется полный путь пространства имен проекта. Однако результатом компиляции такого модуля станет файл, содержащий в имени полный путь иерархии и имеющий расширение .cduil. Рассмотрим вышесказанное на простом примере. Допустим, что у нас есть проект MyProgram, содержащий модуль MyUnit. Тогда модуль получит пространство имен MyProgram.MyUnit, называться файл модуля станет MyUnitl.pas, а компилироваться модуль будет в файл MyProgram. MyUnit.dcuil.
Регистр символов в имени пространства имен не учитывается.
Пространство имен может иметь псевдоним (alias) — короткое название, объявленный после ключевого слова as:
uses MyCompany.VeryDescriptiveUnitName as MainUnit:
В данной строке объявлен псевдоним MainUnit для пространства имен MyCompany. VeryDescriptiveUnitName.
При сборке проекта компилятор использует следующий порядок поиска пространств имен.
1. Текущее пространство имен модуля.
2. Пространство имен проекта.
3. Пространства имен, перечисленные после ключевого слова namespaces в объявлении проекта.
4. Пространства имен, прописанные при настройке компилятора.
Еще по теме Пространства имен:
- Два пространства
- ПРОСТРАНСТВО: ВОСПРИЯТИЕ
- ПРОСТРАНСТВО: ВОСПРИЯТИЕ: НАРУШЕНИЕ
- ПРОСТРАНСТВО СЕМАНТИЧЕСКОЕ СУБЪЕКТИВНОЕ
- Часть I Пространство движения
- 5.10.1. Создание пространства для ответа
- ФАЗИРОВАНИЕ ПРОСТРАНСТВА
- Утренняя медитация от возлюбленной Сарасвати. Исцеление пространства.
- ЛЕКЦИЯ 11 2.2.3. Структура городского пространства
- 5.3. КАК ОСВОБОДИТЬ ПРОСТРАНСТВО ДЛЯ СЮРПРИЗА
- Структурирование консультативного пространства
- Упражнение для восприятия физических пространств
- Упражнение СОЗДАНИЕ СВЯЩЕННОГО ПРОСТРАНСТВА
- 3.11.12. Метод пространства - времени
- РАБОТА С ПРОСТРАНСТВОМ И ВРЕМЕНЕМ.
- "Вторжение в личное пространство"
- 4. Европейское правовое пространство