Module 语句

声明模块的名称,并引入模块包含的变量、属性、事件和过程的定义。

语法

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

部件

attributelist
可选。 请参阅 属性列表

accessmodifier
可选。 可以是以下值之一:

请参阅 Visual Basic 中的 Access 级别

name
必填。 此模块的名称。 请参阅 声明的元素名称

statements
可选。 定义此模块的变量、属性、事件、过程和嵌套类型的语句。

End Module
终止 Module 定义。

注解

语句 Module 定义在其命名空间中可用的引用类型。 模块(有时称为标准模块)类似于类,但有一些重要的区别。 每个模块只有一个实例,无需创建或分配给变量。 模块不支持继承或实现接口。 请注意,模块不是类或结构的类型, 不能声明编程元素来具有模块的数据类型。

只能在命名空间级别使用 Module 。 这意味着模块的 声明上下文 必须是源文件或命名空间,不能是类、结构、模块、接口、过程或块。 不能在另一个模块或任何类型的模块中嵌套模块。 有关详细信息,请参阅 声明上下文和默认访问级别

模块的生存期与程序相同。 由于其成员全部 Shared,因此它们也具有等于该计划的生存期。

模块默认为 好友 访问。 可以使用访问修饰符调整其访问级别。 有关详细信息,请参阅 Visual Basic 中的 Access 级别

模块的所有成员都是 Shared隐式的。

类和模块

这些元素有许多相似之处,但也存在一些重要的差异。

  • 术语。 早期版本的 Visual Basic 可识别两种类型的模块: 类模块 (.cls 文件)和 标准模块 (.bas 文件)。 当前版本分别调用这些 模块

  • 共享成员。 可以控制类的成员是共享成员还是实例成员。

  • 对象方向。 类面向对象,但模块不是。 因此,只能将类实例化为对象。 有关详细信息,请参阅 对象和类

规则

  • 修饰 符。 所有模块成员都隐式 共享。 声明成员时不能使用 Shared 关键字,也不能更改任何成员的共享状态。

  • 遗产。 模块不能继承自除所有模块继承的类型以外的 Object任何类型。 具体而言,一个模块不能从另一个模块继承。

    不能在模块定义中使用 Inherits 语句 ,甚至不能指定 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

另请参阅