Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Объявляет имя модуля и вводит определение переменных, свойств, событий и процедур, составляющих модуль.
Синтаксис
[ <attributelist> ] [ accessmodifier ] Module name
[ statements ]
End Module
Комплектующие
attributelist
Необязательно. См. список атрибутов.
accessmodifier
Необязательно. Может быть одним из следующих вариантов:
См. сведения о уровнях доступа в Visual Basic.
name
Обязательное. Имя этого модуля. См. объявленные имена элементов.
statements
Необязательно. Операторы, определяющие переменные, свойства, события, процедуры и вложенные типы этого модуля.
End Module
Module
Завершает определение.
Замечания
Инструкция Module
определяет ссылочный тип, доступный во всем пространстве имен.
Модуль (иногда называемый стандартным модулем) аналогичен классу, но с некоторыми важными различиями. Каждый модуль имеет ровно один экземпляр и не должен быть создан или назначен переменной. Модули не поддерживают наследование или реализацию интерфейсов. Обратите внимание, что модуль не является типом в том смысле, что класс или структура — нельзя объявить элемент программирования для типа данных модуля.
Можно использовать Module
только на уровне пространства имен. Это означает, что контекст объявления для модуля должен быть исходным файлом или пространством имен, и не может быть классом, структурой, модулем, интерфейсом, процедурой или блоком. Нельзя вложить модуль в другой модуль или в любом типе. Дополнительные сведения см. в разделе "Контексты объявления" и "Уровни доступа по умолчанию".
Модуль имеет то же время существования, что и программа. Поскольку его члены все Shared
, они также имеют время существования, равные программе.
Модули по умолчанию получают доступ "Друг ". Уровни доступа можно настроить с помощью модификаторов доступа. Дополнительные сведения см. в разделе "Уровни доступа" в Visual Basic.
Все члены модуля неявно Shared
.
Классы и модули
Эти элементы имеют много сходств, но есть и некоторые важные различия.
Терминология. Предыдущие версии Visual Basic распознают два типа модулей: модули классов (CLS-файлы) и стандартные модули (BAS-файлы). Текущая версия вызывает эти классы и модули соответственно.
Общие члены. Вы можете контролировать, является ли член класса общим или членом экземпляра.
Ориентация объекта. Классы являются объектно-ориентированными, но модули не являются. Поэтому в качестве объектов можно создать экземпляр только классы. Дополнительные сведения см. в разделе "Объекты и классы".
Правила
Модификаторы. Все члены модуля неявно разделяются. Ключевое
Shared
слово нельзя использовать при объявлении члена, и вы не можете изменить общее состояние любого члена.Наследование. Модуль не может наследовать от любого типа, отличного Objectот типа, от которого наследуются все модули. В частности, один модуль не может наследоваться от другого.
Оператор "Наследование " нельзя использовать в определении модуля, даже чтобы указать Object.
Свойство по умолчанию. Нельзя определить свойства по умолчанию в модуле. Дополнительные сведения см. в разделе "По умолчанию".
Поведение
Уровень доступа. В модуле можно объявить каждый элемент с собственным уровнем доступа. Члены модуля по умолчанию являются общедоступным доступом, за исключением переменных и констант, которые по умолчанию являются частным доступом. Если модуль имеет более ограниченный доступ, чем один из его членов, указанный уровень доступа модуля имеет приоритет.
Область. Модуль находится в области в пределах своего пространства имен.
Область каждого члена модуля — это весь модуль. Обратите внимание, что все члены проходят повышение типа, что приводит к повышению их области до пространства имен, содержащего модуль. Дополнительные сведения см. в разделе "Повышение типов".
Квалификация. В проекте может быть несколько модулей, и вы можете объявить членов с одинаковым именем в двух или нескольких модулях. Однако необходимо указать любую ссылку на такой элемент с соответствующим именем модуля, если ссылка находится за пределами этого модуля. Дополнительные сведения см. в разделе "Ссылки на объявленные элементы".
Пример
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