Константы перечисления как индексы массива в VB6 - PullRequest
2 голосов
/ 11 апреля 2011

Я определяю перечисление, которое может в конечном итоге использоваться в качестве нижнего индекса массива, как это ...

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

будет увеличено по мере необходимости.

Мой вопрос: должен ли я это делать, а если нет, что бы вы предложили?

Ответы [ 3 ]

4 голосов
/ 11 апреля 2011

Обратите внимание, что в 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
1 голос
/ 11 апреля 2011

Я думаю, что это путь.Если вы делаете так, как вы наметили, перечисление может быть расширено без нарушения кода.

Единственное, что я вижу, что нужно сделать, это сообщить другим, кто использует ваш код, для объявления массивов на основе перечисленияиспользуйте MAXIMUM_ENUM_VALUE вместо добавленного ими значения перечисления (в данном случае THE_OTHER_ENUM_VALUE).

0 голосов
/ 11 апреля 2011

Практика заключается в том, что мы используем декларации, такие как

Public Enum MY_ENUM
    THIS_ENUM_VALUE = 1
    THAT_ENUM_VALUE
    THE_OTHER_ENUM_VALUE
    MAXIMUM_ENUM_VALUE
End Enum

и вам даже не нужно редактировать последнюю декларацию :) Конечно, у вас есть массивы на один элемент длиннее, чем нужно, но имхо, это не большая проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...