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