在solidworks的示例常用枚举类型Public Enum swMateType_e    swMateCOINCIDENT = 0    swMateCONCENTRIC = 1    swMatePERPENDICULAR = 2    swMatePARALLEL = 3    swMateTANGENT = 4    swMateDISTANCE = 5    swMateANGLE = 6    swMateUNKNOWN = 7    swMateSYMMETRIC = 8    swMateCAMFOLLOWER = 9    swMateGEAR = 10End Enum个人喜欢用数据结构类型 type Type ReturnPoint
  x As Double
  y As Double
  Z As Double
End Type请问各位1 常用哪种类型?2 type与Enum的区别是什么?

解决方案 »

  1.   

    enum里面只能是数字,type里面可以多种数据类型比如
    dim Student as Type
     ID as integer
     FirstName as string
     LastName as string
    ...
    end type对象描述方面type明显强过enum
      

  2.   

    差别大了去了。Enum 是枚举,值只能是其中之一,比如一个颜色枚举,红、绿、白、蓝,那么一个颜色要么是蓝要么是绿。Type 是结构体,可以包含一组值,比如矩形类型,包含长、宽、距上距离,距左距离,那么同时要这4个值才能确定一个矩形。
      

  3.   

    Enum 语句      定义枚举类型。语法 [Public | Private] Enum namemembername [= constantexpression]membername [= constantexpression]. . .End EnumEnum 语句包含下面部分:部分 描述 
    Public 可选的。表示该 Enum 类型在整个工程中都是可见的。Enum 类型的缺省情况是 Public。 
    Private 可选的。表示该 Enum 类型只在所声明的模块中是可见的。 
    name 必需的。该 Enum 类型的名称。name 必须是一个合法的 Visual Basic 标识符,在定义该 Enum 类型的变量或参数时用该名称来指定类型。 
    membername 必需的。用于指定该 Enum 类型的组成元素名称的合法 Visual Basic 标识符。 
    constantexpression 可选的。元素的值(为 Long 类型)。可以是别的 Enum 类型。如果没有指定 constantexpression,则所赋给的值或者是 0(如果该元素是第一个 membername),或者比其直接前驱的值大 1。 
    说明所谓枚举变量,就是指用 Enum 类型定义的变量。变量和参数都可以定义为 Enum 类型。Enum 类型中的元素被初始化为 Enum 语句中指定的常数值。所赋给的值可以包括正数和负数,且在运行时不能改变。例如:Enum SecurityLevel
       IllegalEntry = -1
       SecurityLevel1 = 0
       SecurityLevel2 = 1
    End EnumEnum 语句只能在模块级别中出现。定义 Enum 类型后,就可以用它来定义变量,参数或返回该类型的过程。不能用模块名来限定 Enum 类型。类模块中的 Public Enum 类型并不是该类的成员;只不过它们也被写入到类型库中。在标准模块中定义的 Enum 类型则不写到类型库中。具有相同名字的 Public Enum 类型不能既在标准模块中定义,又在类模块中定义,因为它们共享相同的命名空间。若不同的类型库中有两个 Enum 类型的名字相同,但成员不同,则对这种类型的变量的引用,将取决于哪一个类型库具有更高的引用优先级。不能在 With 块中使用 Enum 类型作为目标。
      

  4.   

    Type 语句      在模块级别中使用,用于定义包含一个或多个元素的用户自定义的数据类型。语法[Private | Public] Type varname
    elementname [([subscripts])] As type
    [elementname [([subscripts])] As type]
    . . .End TypeType 语句的语法包含下面部分:部分 描述 
    Public 可选的。用于声明可在所有工程的所有模块的任何过程中使用的用户定义类型。 
    Private 可选的。用于声明只能在包含该声明的模块中使用的用户自定义的类型。 
    varname 必需的。用户自定义类型的名称;遵循标准的变量命名约定 
    elementname 必需的。用户自定义类型的元素名称。除了可以使用的关键字,元素名称也应遵循标准变量命名约定。 
    subscripts 可选的。数组元素的维数。当定义大小可变的数组时,只须圆括号。subscripts 参数使用如下语法: 
      [lower To] upper [,[lower To] upper] . . . 
      如果不显式指定 lower,则数组的下界由 Option Base 语句控制。如果没有 Option Base 语句则下界为 0。 
    type 必需的。元素的数据类型;可以是Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、String * length(对定长的字符串)、Object、Variant、其它的用户自定义的类型或对象类型。 
    说明Type 语句只能在模块级使用。使用 Type 语句声明了一个用户自定义类型后,就可以在该声明范围内的任何位置声明该类型的变量。可以使用 Dim、Private、Public、ReDim 或 Static 来声明用户自定义类型的变量。在标准模块中,用户自定义类型按缺省设置是公用的。可以使用 Private 关键字来改变其可见性。而在类模块中,用户自定义类型只能是私有的,且使用 Public 关键字也不能改变其可见性。在 Type...End Type 块中不允许使用行号和行标签。用户自定义类型经常用来表示数据记录,记录一般由多个不同数据类型的元素组成。下面的示例演示了一个用户自定义类型的大小固定的数组的用法:Type StateData
       CityCode (1 To 100) As Integer   ' Declare a static array.
       County As String * 30
    End TypeDim Washington(1 To 100) As StateData在上述示例中,StateData 中包括了一个 CityCode 静态数组,且记录Washington 的结构与 StateData 相同。当在用户自定义类型中声明大小固定的数组时,必须用数字文字或常数而不能用变量来声明数组的维数。数组的下界由 Option Base 语句的设置确定。
      

  5.   

    最讨厌复制粘贴的人了,好象别人都没有msdn似的
      

  6.   

    假设一个班级,学生有学号,学生姓名和学号进立一种对应关系,这是枚举
    张三=101
    李四=102
    王五=103
    .....对应于每个学生有一组参数,比如学号、座位、籍贯、年龄等 表示多个属性,各不相同值,但都有该属性,这就是Typetype student
    学号 as string
    座位 as long
    籍贯 as string
    年龄 as long
    ....
    end type
      

  7.   

    Enum, 你就当成是将一系列相关的const声明合在一块Type 则是一系列相关的变量合在一起. 它们的作用都是为了便于调用和代码管理, 因为实际上你可以不用任何Enum和Type,一样可以写代码.即使你从来也不知道有Enum和Type这两个东西, 当你程序代码量达到一定的程序的时候, 你自然而然会"希望"语言中提供有这样功能的东西, 到那个时候你再学习Enum和Type就会发现它们对于你代码的巨大便利和好处了.
      

  8.   

    总之一句话type类型相当于一个小class,可以实例化你要是问type和class有什么区别倒还是有点深度,它和enum根本就是一个天一个地嘛
      

  9.   

    还有一点很重要的,就是type就相当于其他语言中的struct
    经常用api函数你就发现了,有些参数必须以type声明的类型才能传递过去。比如GetCursorPos
      

  10.   

    enum你这个例子举的不好。你楼下的比你好。为什么不好,因为enum是硬编码在程序中的。你的例子应该使用哈希表(Hash Table)。
      

  11.   

    更讨厌你这种人 msdn都不看就来这里发表言论 enum和type没啥区别   还是enum和const没啥区别?