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


Оператор модуля

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

Синтаксис

[ <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

См. также