类模块(.cls)和。 Visual Basic中的模块(.bas)?
答案 0 :(得分:9)
模块(.bas)具有可在程序中全局使用的方法和变量,并且只有一个数据实例(类似于C#中的静态方法或字段)。类模块(.cls)具有通常只能在实例化对象时访问的属性和方法,但可以有多个副本,每个副本都有不同的数据。
来自MSDN: Visual Basic Concepts:
类与标准模块的存储方式不同。 标准模块的数据永远不会超过一个副本。这个 表示当程序的一部分更改公共变量时 标准模块,程序的另一部分随后读取 该变量将获得相同的值。
另一方面,类模块数据分别存在于每个模块数据中 班级的实例。
来自Devx.com: Class Module(.cls) vs. Module(.bas):
在标准模块和类模块之间进行决定不是 基于性能的决定,但设计之一。主要区别 两者之间是他们处理数据的方式。标准模块 只存储一份数据。类模块封装数据 在每个类的实例中。也就是说,对于每个实例 类,数据分开存在。
另一个主要区别是变量和程序的范围 在模块内。通常,声明任何变量和过程 因为标准模块中的Public在项目中的任何位置都可见 或标准模块位于组件中的外部程序。 在类模块中声明为Public的变量和过程可以 只能通过引用类模块的实例来看到。
模块中存储的数据和过程的生命周期会受到影响 使用哪种类型的模块。数据的生命周期和 类模块中的过程由对象的生命周期定义。 因此,只有在引用对象时才能使用数据和过程 存在。标准模块中声明的数据和过程是 在程序的生命周期内可用。
因此,要回答你的问题,如果你正在编写一个函数 你希望在程序的整个生命周期中都可用并且可见 到应用程序中的所有代码,然后将函数放在一个 标准模块。
答案 1 :(得分:0)
如果程序的生命周期需要代码并且应用程序中的所有代码都可以看到,则将该函数放在标准模块中。
标准模块仅存储一份数据副本。类模块将数据封装在类的每个实例中。也就是说,对于类的每个实例,数据都是单独存在的。
通常,在标准模块中声明为Public的任何变量和过程在项目的任何位置都可见。 在类模块中声明为Public的变量和过程只能通过对类模块实例的引用来看到。
模块中存储的数据和过程的生命周期受使用哪种模块的影响。类模块中数据和过程的生命周期由对象的生命周期定义。因此,只有存在对象的引用时,才能使用数据和过程。标准模块中声明的数据和过程在程序的生命周期内可用。