Поделиться через


Оператор Namespace

Объявляет имя пространства имен и вызывает исходный код ниже объявления для компиляции в пределах этого пространства имен.

Namespace { name | name.name }
    [ componenttypes ]
End Namespace

Части

  • name
    Обязательный. Уникальное имя пространства имен. Должно быть допустимым идентификатором Visual Basic. Дополнительные сведения см. в разделе Имена объявленных типов (Visual Basic).

  • componenttypes
    Необязательный. Элементы пространства имен. В пространство имен могут входить перечисления, структуры, интерфейсы, классы, модули, делегаты, другие пространства имен и прочие элементы.

  • End Namespace
    Завершает блок Namespace.

Заметки

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

Можно использовать инструкцию Namespace только на уровне файла или пространства имен. Это означает, что контекст объявления внутри пространства имен должен быть исходным файлом или другим пространством имен и не может быть классом, структурой, модулем, интерфейсом или процедурой. Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию (Visual Basic).

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

Правила

  • Атрибуты. Нельзя применять атрибуты к пространству имен. Атрибут вносит сведения для метаданных сборки, которые не имеют смысла для исходных классификаторов, таких как пространства имен.

  • Модификаторы. Нельзя применять модификаторы доступа или процедур или какие-либо другие модификаторы к пространству имен. Поскольку оно не является типом, данные модификаторы не имеют смысла.

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

Поведение

  • Уровень доступа. Элементы программирования, объявленные на уровне пространства имен (то есть имеют смысл в пространстве имен, но не внутри какого-либо другого элемента), могут иметь доступ Public или Friend. Если данный параметр не определен, по умолчанию для элемента используется уровень доступа Friend. Элементы, которые можно объявить на уровне пространства имен, включают классы, структуры, модули, интерфейсы, перечисления и делегаты. Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию (Visual Basic).

  • Компиляция. Все элементы программирования, объявленные после оператора Namespace, относятся к пространству имен. Visual Basic продолжает компилировать элементы в последнем объявленном пространстве имен до тех пор, пока он не встречает оператор End Namespace или Namespace.

  • Добавление к пространству имен. Если пространство имен уже определено (даже за пределами проекта), к нему можно добавить элементы программирования. Для этого следует использовать оператор Namespace, чтобы дать Visual Basic команду компиляции следующих элементов в этом пространстве имен.

    В следующем примере определяется схема нового универсального списка класса и она добавляется к пространству имен 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
    
  • Корневое пространство имен Все имена пространства имен в проекте основаны на корневом пространстве имен. Visual Studio задает имя проекта как корневое пространство имен по умолчанию для всего кода в проекте. Например, если проект называется Payroll, его элементы программирования относятся к пространству имен Payroll. При объявлении Namespace funding полным именем пространства имен будет являться Payroll.funding.

    При необходимости указать существующее пространство имен в операторе Namespace (как в примере с базовым списком классов), можно установить корневое пространство имен в значение NULL. Для этого щелкните Свойства проекта в меню Проект и удалите запись в поле Корневое пространство имен. Если это не было выполнено в примере с базовым списком классов, компилятор Visual Basic будет обрабатывать System.Collections.Generic в качестве нового пространства имен в пределах проекта Payroll, а полным именем будет являться Payroll.System.Collections.Generic.

    Кроме того можно использовать ключевое слово Global для ссылки на элементы пространства имен, определенные вне проекта. Это позволяет сохранить имя проекта в качестве корневого пространства имен. Это уменьшает вероятность случайного слияния элементов программирования с соответствующими им элементами в существующем пространстве имен.

Устранение неполадок

  • Неопределенные типы. Корневое пространство имен может привести к непредвиденному объединению имен пространств имен. Если сделать ссылку на пространство имен, определенное вне проекта, компилятор Visual Basic может обработать их как вложенные пространства имен в корневом пространстве имен. В таком случае компилятор не распознает никакие типы, которые уже были определены во внешних пространствах имен. Чтобы избежать этого, следует установить корневое пространство имен в значения NULL, как описано в разделе "Корневое пространство имен", или использовать ключевое слово Global для доступа к элементам внешних пространств имен.

Пример

В следующем примере объявляются два пространства имен, причем одно из них вложено в другое.

Namespace n1
    Namespace n2
        Class a
            ' Insert class definition.
        End Class
    End Namespace
End Namespace

В следующем примере в одной строке объявляется несколько вложенных пространств имен. По смыслу этот пример эквивалентен предыдущему.

Namespace n1.n2
    Class a
        ' Insert class definition.
    End Class
End Namespace

В следующем примере выполняется обращение к классу, определенному в предыдущих примерах.

Dim instance As New n1.n2.a

См. также

Ссылки

Оператор Imports (пространство имен .NET и тип)

Основные понятия

Имена объявленных типов (Visual Basic)

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