一,类模块的使用 VB6的类是进程内COM服务器,拥有双接口 1, Iunknown dim obj as new class1 '声明变量时直接实例化对象 obj.xxx(xxx表示类成员函数) 这样直接调用类中成员函数效率高。 2,IDispatch dim obj as class1 或且 dim obj as object set obj = class1 ‘实例化对象 obj.xxx (xxx表示类中成员内部类函数) 这样调用是走的IDispatch接口,内部会通过,Dispatch.GetIDsofName 和 Dispatch.Invoke 分发调用类成员函数,效率较低。 二, Private 修饰符,表示变量,函数,结构体等为模块私有,仅在本模块内有效,所有模块都可以使用Private 修饰符,不仅仅在窗体模块 三,变长字符串存储空间应该只有4字节吧(字符串指针),那来的10字节+长度, 四,枚举类型,跟常量感觉也没什么区别,爱用啥用啥,什么模块内都可以写 五 for each .......next dim s() as variant,n as variant s = array(1,2,3,4,5) for each n in s msgbox n next
Dim a%(1 To 10), max% Randomize For Each n In a n = Int(Rnd * 90) + 10 Print n; Next Print max = a(1) For Each n In a If CInt(n) > max Then max = CInt(n) Next Print max max结果为什么是0? n是一个变体类型变量,怎么转化成一个整型数?
就以你的四张图为例吧 用Private的两张图(图三和图四),都是错误的,在一个模块中用Private声明的任何东西都不能在其他模块当中使用;如果用Private声明了某种类型,那么在哪个模块中声明的,就只能在那个模块中使用,比如图三,Student是标准模块的私有类型,就只能在标准模块中使用 用Public的两张图,图一是正确的,可以这样声明类型并在其他模块中使用;图二是错误的,不能在类模块中声明Public Type,不过Public Enum在哪里都是可以用的 最后关于枚举类型再说几句:其实枚举类型不是你这么用的,枚举类型的成员不是变量的成员,而是类型的成员,也就是说你这里的 变量.a 是错误的,而写成 xin.a 才是正确的;实际上,通常连这个类型前缀都不用写的,直接用a就行,你记住这样一句话:Enum类型就是一组Long型的常量,也就是说,你这里的a和b就相当于两个用Const定义的常量 那么枚举类型的变量又该怎么用呢?比如可以用枚举类型的成员给变量赋值: 变量 = a 可以用任意整数给枚举类型的变量赋值,就好像它们是Long型的变量一样(其实从本质上说就是): 变量 = 15 也可以用枚举类型的变量或成员给其他类型的变量赋值: Dim x As Integer x = b x = 变量 说到VB内置的枚举类型,其实MsgBox函数的第二个参数以及返回值就是枚举类型的(不是同一个枚举类型),你在代码中可以写vbOKCancel、vbYes之类的东西,这些就是枚举类型的成员;另外,还可以写vbYesNo+vbInformation这样的运算,说明枚举类型的值是可以进行运算的(之前也说过了,枚举类型本质上就是Long类型)