VB6中作为数组下标的枚举常量

VB6中作为数组下标的枚举常量,vb6,Vb6,我正在定义一个枚举,它可能最终被用作数组下标,如下所示 Public Enum MY_ENUM THIS_ENUM_VALUE = 1 THAT_ENUM_VALUE THE_OTHER_ENUM_VALUE MAXIMUM_ENUM_VALUE = THE_OTHER_ENUM_VALUE End Enum 理论上,任何添加另一个枚举的人都将更正最大枚举值和定义为 Dim my_array(MAXIMUM_ENUM_VALUE) As Integer 将根据

我正在定义一个枚举,它可能最终被用作数组下标,如下所示

Public Enum MY_ENUM
    THIS_ENUM_VALUE = 1
    THAT_ENUM_VALUE
    THE_OTHER_ENUM_VALUE
    MAXIMUM_ENUM_VALUE = THE_OTHER_ENUM_VALUE
End Enum
理论上,任何添加另一个枚举的人都将更正最大枚举值和定义为

Dim my_array(MAXIMUM_ENUM_VALUE) As Integer
将根据需要进行放大


我的问题是:我应该这样做吗?如果不应该,你会有什么建议?

我认为这是一条路。如果您按照概述的方式操作,则可以在不破坏代码的情况下扩展枚举


我看到需要做的唯一一件事是通知使用您的代码基于枚举声明数组的其他人使用
最大枚举值
,而不是他们添加的枚举值(在本例中,
其他枚举值

Public Enum MY_ENUM
    THIS_ENUM_VALUE = 1
    THAT_ENUM_VALUE
    THE_OTHER_ENUM_VALUE
    MAXIMUM_ENUM_VALUE
End Enum

您甚至不需要编辑上一个声明:)请确保数组的长度比需要的长度长一个元素,但这并不是什么大问题。

请注意,在VB6中使用“隐藏枚举值”也是非常典型的,如下所示:

Public Enum MY_ENUM
    THIS_ENUM_VALUE = 1
    THAT_ENUM_VALUE
    THE_OTHER_ENUM_VALUE
    [_first] = THIS_ENUM_VALUE 
    [_last] = THE_OTHER_ENUM_VALUE
End Enum
您可以将此建议与其他建议结合起来:

Public Enum MY_ENUM
    [_first]
    THIS_ENUM_VALUE
    THAT_ENUM_VALUE
    THE_OTHER_ENUM_VALUE
    [_last]
End Enum

Dim MyArray(MY_ENUM.[_first] To MY_ENUM.[_last]) As MY_ENUM

看起来您正在二维数组的不同列中存储不同的数据?可能您应该使用结构(
Type
)或对象(
Class
)来代替?@MarkJ,谢谢您的提示,但我只是将这些枚举用作数组索引;例如,
myarray(FRONT)
myarray(BACK)
myarray(1)
myarray(2)
更好。在这种情况下,为什么不
myarray(LBound(myarray))
myarray(UBound(myarray))
?我仍然不明白枚举的必要性——当然可能是我