Matra Divat Ответов: 3

Можно ли привести перечисление к int


Привет, это нормально, чтобы привести int к перечислению, как это:

itemID = (MyEnumType)results.value("itemID").toInt();


где itemID имеет тип MyEnumType-а правая сторона-целое число.

3 Ответов

Рейтинг:
23

Stefan_Lang

Для компилятора это нормально. Хотя вы можете ознакомиться с C++11, который позволяет определять перечисления, не основанные на int.

Для хорошего кодирования это так нет однако" ОК": приведение почти всегда используется как лекарство от плохого выбора переменной, аргумента функции или типа возвращаемой функции. Или же это может быть случай плохого дизайна класса. Если вы можете исправить функцию, переменную или класс, чтобы использовать тип, который не требует приведения, это всегда будет предпочтительным решением.


[no name]

Привет, на самом деле я думаю, что большинство значений в моих типах перечислений-это "int"...

Рейтинг:
15

S. M. Ahasan Habib

Ответ - да. Вы просто можете сделать это следующим образом

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();
}


[no name]

Мое перечисление объявлено где-то отдельно в файле .h, так что я просто приведу его, я полагаю, также, как вы упомянули ...

Рейтинг:
0

H.Brydon

Это одна из неудачных особенностей перечислений. Нет никакого элегантного преобразования из "ничего" в перечисление. То, как вы это делаете, выглядит уродливо, но это в значительной степени единственный способ, кроме большого неприятного оператора switch (), который дублирует все значения перечисления.