Оператор Module

Обновлен: Ноябрь 2007

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

[ <attributelist> ] [ accessmodifier ]  Module name
    [ statements ]
End Module

Компоненты

  • attributelist
    Дополнительный. См. раздел Список атрибутов.

  • accessmodifier
    Дополнительный. Может принимать следующие значения.

    См. раздел Уровни доступа в Visual Basic.

  • name
    Обязательный. Имя этого модуля. См. раздел Имена объявленных элементов.

  • statements
    Дополнительный. Операторы, которые определяют переменные, свойства, события, процедуры и вложенные типы этого модуля.

  • End Module
    Завершает определение Module.

Заметки

Оператор Module определяет ссылочный тип, доступный для всего пространства имен. Модуль (иногда называемый стандартный модуль) имеет некоторое сходство с классом, однако, существуют важные различия. Каждый модуль имеет ровно один экземпляр и не требует создания или присваивания переменной. Модули не поддерживают наследование и не реализуют интерфейсы. Обратите внимание, что модуль не является типом (таким как класс или структура), поэтому нельзя объявлять элемент программирования с типом данных "модуль".

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

Модуль имеет то же время существования, что и программа. Поскольку все элементы модуля являются Shared, они также имеют время существования равное времени существования программы.

Модули по умолчанию имеют уровень доступа Friend (Visual Basic). Уровни доступа можно настроить с помощью модификаторов доступа. Дополнительные сведения см. в разделе Уровни доступа в Visual Basic.

Все элементы модуля являются неявно Shared.

Классы и модули

Эти элементы имеют много общего, но существуют важные различия.

  • Терминология. В предыдущих версиях Visual Basic различаются два типа модулей: модули класса (файлы CLS) и стандартные модули (файлы BAS). В текущей версии они называются соответственно классами и модулями.

  • Общие члены. Можно управлять тем, является ли член класса общим или членом экземпляра.

  • Объектная ориентация. Классы являются объектно ориентированными, а модули — нет. Поэтому только классы могут быть созданы как объекты. Дополнительные сведения см. в разделе Классы и модули.

Правила

  • Модификаторы. Все элементы модулей неявно Shared (Visual Basic). Нельзя использовать ключевое слово Shared при объявлении элементов, также невозможно изменить статус "shared" любого элемента.

  • Наследование. Модуль не может наследовать от типа, отличного от Object, от которого наследуют все модули. В частности, один модуль не может наследовать от другого.

    Нельзя использовать Инструкция Inherits в определении модуля даже для указания Object.

  • Свойство по умолчанию. Нельзя определять никакие Свойства, используемые по умолчанию в модуле.

Поведение

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

  • Область действия. Область действия модуля распространяется на все его пространство имен.

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

  • Квалификация. В проекте может быть несколько модулей; можно объявлять элементы с одним и тем же именем в двух или нескольких модулях. Однако если ссылка на элемент модуля находится за пределами модуля, то в ней необходимо указывать соответствующее имя модуля. Дополнительные сведения см. в разделе Разрешение ссылки, когда несколько переменных имеют одинаковые имена.

Пример

Public Module thisModule
    Sub Main()
        Dim userName As String = InputBox("What is your name?")
        MsgBox("User name is" & userName)
    End Sub
    ' Insert variable, property, procedure, and event declarations.
End Module

См. также

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

Повышение типа

Ссылки

Оператор Class (Visual Basic)

Оператор "Namespace"

Инструкция Structure

Оператор Interface (Visual Basic)

Оператор Property