Ярлык, который я часто использую в 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 #?