2011-04-11 40 views
2

數組下標我限定其可最終被用作數組下標這樣的枚舉...枚舉常數如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 

將根據需要放大。

我的問題是:我應該這樣做,如果不是,你會建議什麼?

+0

看起來你是存儲不同數據在2D數組的不同列中?可能你應該使用結構('Type')或對象('Class')呢? – MarkJ 2011-04-11 14:00:34

+0

@MarkJ,感謝您的提示,但我只是將這些枚舉用作數組索引;例如,我會說'myarray(FRONT)'和'myarray(BACK)'比'myarray(1)'和'myarray(2)'更可取。 – 2011-04-11 14:57:34

+0

在這種情況下,爲什麼不'myarray(LBound(myarray))'和'myarray(UBound(myarray))'?我仍然不明白需要枚舉 - 當然,它可能是我 – MarkJ 2011-04-11 15:39:03

回答

0

實踐是我們使用聲明像

Public Enum MY_ENUM 
    THIS_ENUM_VALUE = 1 
    THAT_ENUM_VALUE 
    THE_OTHER_ENUM_VALUE 
    MAXIMUM_ENUM_VALUE 
End Enum 

,你甚至不需要編輯最後聲明:)當然,你有你的數組一個元素長於必要的,但恕我直言,這不是什麼大問題。

1

我認爲這是要走的路。如果按照您所描述的那樣操作,則可以在不破壞代碼的情況下擴展枚舉。

我看到的唯一需要做的就是通知其他使用您的代碼的人使用枚舉來聲明數組,以使用MAXIMUM_ENUM_VALUE而不是它們添加的枚舉值(在本例中爲THE_OTHER_ENUM_VALUE)。

4

注意,它也是非常典型的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 
+0

謝謝你;我可能會嘗試。 – 2011-04-11 14:56:16