Использование контрольных значений в перечислении C # (размер перечисления во время компиляции)?

Ярлык, который я часто использую в C при работе со встроенными API (в первую очередь, протоколами связи), позволяет мне редактировать массив enum и после этого изменять размер всего остального:

typedef enum {
   errortype1,
   errortype2,
   ...
   errortypeN,
   ERROR_TYPE_MAX
} ErrorTypeList;

int errorcounts[ERROR_TYPE_MAX]; // Create array to hold a counter for each error type

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

В C #, однако, это не работает как есть:

enum ErrorTypeList {
   errortype1,
   errortype2,
   ...
   errortypeN,
   ERROR_TYPE_MAX
};

int errorcounts[ErrorTypeList.ERROR_TYPE_MAX]; // Create array to hold a counter for each error type

Такое использование приводит к ошибке Размер массива не может быть указан в объявлении переменной , что предполагает использование new .

Является ли определение массива во время выполнения (через new ) моим единственным вариантом, или есть способ сделать это без new, поскольку размер перечисления не изменится после компиляции?

Есть ли альтернатива этому типу шаблона изменения размера перечисления, которая лучше подходит для C #?

5
задан Adam Davis 24 February 2012 в 17:37
поделиться