声明模块的名称,并引入模块包含的变量、属性、事件和过程的定义。
语法
[ <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