Оператор 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