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


Оператор Module

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

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

Части

Заметки

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

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

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

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

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

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

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

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

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

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

Правила

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

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

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

  • Атрибут по умолчанию. В модуле нельзя определять свойства по умолчанию. Дополнительные сведения см. в разделе Default (Visual Basic).

Поведение

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

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

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

  • Квалификация. В проекте может быть несколько модулей; можно объявлять элементы с одним и тем же именем в двух или нескольких модулях. Однако если ссылка на элемент модуля находится за пределами модуля, то в ней необходимо указывать соответствующее имя модуля. Дополнительные сведения см. в разделе Ссылки на объявленные элементы (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

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

Повышение типа (Visual Basic)