Я определил Enum. У меня также есть 2 метода:По умолчанию Тип Enum, почему этот код не компилируется?
метод 1 - получите тип перечисления - перечисление типа по умолчанию INT поэтому он будет печатать
System.Int32
Метод 2 - будет иметь переключатель случай, сравнить тип перечисления с простое число - поэтому в случае, если enum является int, регистр должен быть скомпилирован без проблем и без кастингов.
Но этот код не компилируется, и я получаю две ошибки (точка ошибки на случай 1 и случай 2 в случае переключения)
Не может неявно преобразовать тип «Int» в «Color ». Явное преобразование существует (вы пропали без вести броска?)
Кто-то может объяснить, почему я получаю сообщение об ошибке, даже если Color
типа является int
?
Чтобы скомпилировать этот код, мне нужно сделать отливку до Color
до int
.
Код:
public enum Color
{
RED, // 0
BLUE, // 1
GREEN // 2
};
Color color = Color.BLUE;
private void boo(object sender, EventArgs e)
{
string str = Enum.GetUnderlyingType(color.GetType()).ToString();
// it will print 'System.Int32'
System.Console.WriteLine(str);
}
// the switch case make the compile error - but the color is int
private void foo()
{
switch(color)
{
case 0:
{
}
break;
case 1:
{
}
break;
case 2:
{
}
break;
}
}
Вам не нужны скобки для блоков вашего корпуса. –
Цвет ** не ** 'int'. Это «Цвет», с базовым типом 'int'. Почему вы считаете, что перечисления и ints одинаковы? –
переключатель ((int) цвет), если вам не нравится использовать значения enum внутри переключателя –