vb 模块和作用域的关系

简介: vb 模块和作用域的关系

模块

在VB中有三种类型的模块,分别是窗体模块、标准模块和类模块。


窗体模块

窗体模块中包含了窗体以及窗体中所有控件的事件过程,文件扩展名为(*.frm),窗体文件中不仅包含窗体对象的外观设计,也包含窗体模块(Form Module)。


标准模块

在一个工程中,某些代码要被多个窗体或设计器共同使用,就可以将这些代码存储在一个标准模块(Standard Module)中,其文件扩展名为(*.bas)。标准模块中只含有代码。程序一运行就加载模块,它的函数和变量是全局的,随时可以调用。


类模块

如果要创建自己定义的对象,就要首先创建一个类模块(Class Module)。类模块中包含了自定义的属性、方法和事件的定义及其实现。它是数据和代码的结合体,可以将其理解为是没有物理表现的控件。其文件扩展名为(*.cls)。类模块就是一个类,要实例化对象才能调用它的函数。


作用域

一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。


变量的3种作用域:


1、单个过程:在一个过程中声明的变量,作用域只包含本过程,也可以称作 过程变量。


2、单个模块:在模块的第一个过程之前声明的变量,作用域包含本模块,也可以称作 模块变量。


3、所有模块:在任意一个模块的第一个过程之前使用Public声明的变量,作用域包含本工作簿的所有模块,也可以称作为 公共变量。


为什么窗体中无论是public,还是private都只在窗体内有效,而标准模块则不同

051846388642d74c1e4fedbafe60fc6b.png

3c56799c137cd642adc87e61231582de.png

答案来源于标准模块的作用


简单的应用程序可以只有一个窗体,应用程序的所有代码都驻留在窗体模块中。而当应用程序庞大复杂时,就要另加窗体。最终可能会发现在几个窗体中都有要执行的公共代码。因为不希望在两个窗体中重复代码,所以要创建一个独立模块,它包含实现公共代码的过程。独立模块应为标准模块。此后可以建立一个包含共享过程的模块库。


相关文章
|
1天前
|
JavaScript 前端开发
避免将变量和函数暴露给全局作用域可能导致的命名冲突和代码可维护性
保护变量和函数不暴露于全局作用域可防止命名冲突,提升代码可维护性。
|
1天前
|
编译器 C# 开发者
C# 10.0中的全局`using`指令:简化命名空间引用的新方式
【1月更文挑战第4天】本文介绍了C# 10.0中引入的全局`using`指令,该指令允许开发者在项目级别统一管理命名空间引用,从而消除源文件中重复的`using`语句。全局`using`指令通过减少冗余代码、提高可维护性和统一命名空间管理,为开发者带来了更高效的编码体验。文章详细解释了如何实现全局`using`指令,并探讨了其在实际项目中的优势和适用场景。
|
1天前
|
自然语言处理 JavaScript 前端开发
作用域的概念及作用?作用域的分类?.js 属于哪种作用域?
作用域的概念及作用?作用域的分类?.js 属于哪种作用域?
36 0
|
1天前
|
编译器 C++
在C++语言中函数的定义
在C++语言中函数的定义
11 0
|
9月前
|
Java C++
类的成员之四:代码块
类的成员之四:代码块
43 0
|
10月前
Echarts公用代码的变量统一封装调用
Echarts公用代码的变量统一封装调用
40 0
VB编程:利用CallByName函数对对象进行操作-23
VB编程:利用CallByName函数对对象进行操作-23
107 0
|
Kotlin
【Kotlin】扩展函数作用域分析 ( 扩展函数导入 | 扩展函数重载 | 扩展函数作用域优先级 )(二)
【Kotlin】扩展函数作用域分析 ( 扩展函数导入 | 扩展函数重载 | 扩展函数作用域优先级 )(二)
205 0
【Kotlin】扩展函数作用域分析 ( 扩展函数导入 | 扩展函数重载 | 扩展函数作用域优先级 )(二)
|
Kotlin
【Kotlin】扩展函数作用域分析 ( 扩展函数导入 | 扩展函数重载 | 扩展函数作用域优先级 )(一)
【Kotlin】扩展函数作用域分析 ( 扩展函数导入 | 扩展函数重载 | 扩展函数作用域优先级 )(一)
161 0
【Kotlin】扩展函数作用域分析 ( 扩展函数导入 | 扩展函数重载 | 扩展函数作用域优先级 )(一)
VB编程:利用CallByName函数对对象进行操作
VB编程:利用CallByName函数对对象进行操作
281 0