Оператор Namespace
Объявляет имя пространства имен и приводит к компиляции исходного кода, следующего за объявлением в этом пространстве имен.
Синтаксис
Namespace [Global.] { name | name.name }
[ componenttypes ]
End Namespace
Детали
Глобальный необязательный. Позволяет определить пространство имен из корневого пространства имен проекта. См . раздел "Пространства имен" в Visual Basic.
name
Обязательный. Уникальное имя, определяющее пространство имен. Должен быть допустимым идентификатором Visual Basic. Дополнительные сведения см. в разделе "Объявленные имена элементов".
componenttypes
Необязательный. Элементы, составляющие пространство имен. К ним относятся, но не ограничиваются перечислениями, структурами, интерфейсами, классами, модулями, делегатами и другими пространствами имен.
End Namespace
Namespace
Завершает блок.
Замечания
Пространства имен используются в качестве организационной системы. Они предоставляют способ классификации и представления элементов программирования, предоставляемых другим программам и приложениям. Обратите внимание, что пространство имен не является типом в том смысле, что класс или структура — нельзя объявить элемент программирования для типа данных пространства имен.
Все элементы программирования, объявленные после инструкции, принадлежат к пространству Namespace
имен. Visual Basic продолжает компилировать элементы в последнее объявленное пространство имен до тех пор, пока не обнаружит оператор или другую End Namespace
Namespace
инструкцию.
Если пространство имен уже определено, даже за пределами проекта, можно добавить в него элементы программирования. Для этого вы используете инструкцию Namespace
, чтобы направить Visual Basic для компиляции элементов в это пространство имен.
Инструкцию Namespace
можно использовать только на уровне файла или пространства имен. Это означает, что контекст объявления для пространства имен должен быть исходным файлом или другим пространством имен и не может быть классом, структурой, модулем, интерфейсом или процедурой. Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию.
Можно объявить одно пространство имен в другом. Нет строгого ограничения на уровни вложения, которые можно объявить, но помните, что если другой код обращается к элементам, объявленным в самом внутреннем пространстве имен, он должен использовать строку квалификации, содержащую все имена пространств имен в вложенной иерархии.
Уровень доступа
Пространства имен обрабатываются так, как если бы они имели Public
уровень доступа. Пространство имен можно получить из кода в любом месте того же проекта, из других проектов, ссылающихся на проект, и из любой сборки, созданной из проекта.
Элементы программирования, объявленные на уровне пространства имен, то есть в пространстве имен, но не внутри любого другого элемента, могут иметь Public
или Friend
получать доступ. Если не указано, уровень доступа такого элемента используется Friend
по умолчанию. Элементы, которые можно объявить на уровне пространства имен, включают классы, структуры, модули, интерфейсы, перечисления и делегаты. Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию.
Корневое пространство имен
Все имена пространств имен в проекте основаны на корневом пространстве имен. Visual Studio назначает имя проекта в качестве корневого пространства имен по умолчанию для всего кода в проекте. Например, если проект называется Payroll
, его программные элементы относятся к пространству имен Payroll
. Если вы объявляете Namespace funding
, полное имя этого пространства Payroll.funding
имен .
Если вы хотите указать существующее пространство имен в инструкции, например в Namespace
примере универсального класса списка, можно задать корневое пространство имен значение NULL. Для этого щелкните "Свойства проекта" в меню "Проект ", а затем снимите запись корневого пространства имен, чтобы поле было пустым. Если вы этого не сделали в примере универсального класса списка, компилятор Visual Basic будет принимать System.Collections.Generic
в качестве нового пространства имен в проекте Payroll
с полным именем Payroll.System.Collections.Generic
.
Кроме того, можно использовать Global
ключевое слово для ссылки на элементы пространств имен, определенных за пределами проекта. Это позволяет сохранить имя проекта в качестве корневого пространства имен. Это снижает вероятность непреднамеренного объединения элементов программирования вместе с существующими пространствами имен. Дополнительные сведения см. в разделе "Глобальные ключевые слова в полных именах" в пространствах имен в Visual Basic.
Ключевое слово Global
также можно использовать в инструкции пространства имен. Это позволяет определить пространство имен из корневых пространств имен проекта. Дополнительные сведения см. в разделе "Глобальные ключевые слова в операторах пространства имен" в пространствах имен в Visual Basic.
Устранение неполадок. Корневое пространство имен может привести к непредвиденным объединениям имен имен. Если вы ссылаетесь на пространства имен, определенные за пределами проекта, компилятор Visual Basic может считать их вложенными пространствами имен в корневом пространстве имен. В таком случае компилятор не распознает типы, которые уже определены во внешних пространствах имен. Чтобы избежать этого, задайте для корневого пространства имен значение NULL, как описано в разделе "Корневое пространство имен" или используйте Global
ключевое слово для доступа к элементам внешних пространств имен.
Атрибуты и модификаторы
Нельзя применять атрибуты к пространству имен. Атрибут вносит сведения в метаданные сборки, которые не имеют значения для исходных классификаторов, таких как пространства имен.
К пространству имен нельзя применять модификаторы доступа или процедуры или другие модификаторы. Поскольку это не тип, эти модификаторы не имеют смысла.
Пример 1
В следующем примере объявляются два пространства имен, вложенные в другое.
Namespace n1
Namespace n2
Class a
' Insert class definition.
End Class
End Namespace
End Namespace
Пример 2
В следующем примере объявляется несколько вложенных пространств имен в одной строке и эквивалентны предыдущему примеру.
Namespace n1.n2
Class a
' Insert class definition.
End Class
End Namespace
Пример 3
Следующий пример обращается к классу, определенному в предыдущих примерах.
Dim instance As New n1.n2.a
Пример 4
В следующем примере определяется скелет нового универсального класса списка и добавляет его в System.Collections.Generic пространство имен.
Namespace System.Collections.Generic
Class specialSortedList(Of T)
Inherits List(Of T)
' Insert code to define the special generic list class.
End Class
End Namespace