Оператор Module

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

Синтаксис

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

Детали

attributelist
Необязательно. См . список атрибутов.

accessmodifier
Необязательно. Может применяться один из перечисленных ниже типов.

См. раздел Access levels in Visual Basic.

name
Обязательный. Имя этого модуля. См. раздел Declared Element Names.

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

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

Замечания

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

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

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

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

Все члены модуля неявно Shared.

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

Эти элементы имеют много сходств, но есть и некоторые важные различия.

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

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

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

Правила

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

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

    Оператор "Наследование" нельзя использовать в определении модуля, даже чтобы указатьObject.

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

Поведение

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

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

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

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

Пример

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

См. также