Можно ли привести перечисление к int
Привет, это нормально, чтобы привести int к перечислению, как это:
itemID = (MyEnumType)results.value("itemID").toInt();
где itemID имеет тип MyEnumType-а правая сторона-целое число.
itemID = (MyEnumType)results.value("itemID").toInt();
Для компилятора это нормально. Хотя вы можете ознакомиться с C++11, который позволяет определять перечисления, не основанные на int.
Для хорошего кодирования это так нет однако" ОК": приведение почти всегда используется как лекарство от плохого выбора переменной, аргумента функции или типа возвращаемой функции. Или же это может быть случай плохого дизайна класса. Если вы можете исправить функцию, переменную или класс, чтобы использовать тип, который не требует приведения, это всегда будет предпочтительным решением.
Привет, на самом деле я думаю, что большинство значений в моих типах перечислений-это "int"...
Ответ - да. Вы просто можете сделать это следующим образом
public enum Country { Bangladesh = 1, India = 2 } public static void Main(string[] args) { Country e = Country.Bangladesh; int x = (int) e; Country e2 = (Country) x; Console.ReadKey(); }
Мое перечисление объявлено где-то отдельно в файле .h, так что я просто приведу его, я полагаю, также, как вы упомянули ...
Это одна из неудачных особенностей перечислений. Нет никакого элегантного преобразования из "ничего" в перечисление. То, как вы это делаете, выглядит уродливо, но это в значительной степени единственный способ, кроме большого неприятного оператора switch (), который дублирует все значения перечисления.