我定义了一个枚举。我也有两种方法:
方法1 - 将获取枚举类型 - 枚举默认类型为int,因此它将打印System.Int32
方法2 - 将具有将枚举类型与简单数字进行比较的switch case - 因此,如果enum是int,则switch需要编译而没有问题且没有任何强制转换。
但是这段代码没有编译,我得到两个错误(案例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;
}
}
答案 0 :(得分:3)
您的代码必须是:
switch( color )
{
case Color.RED:
break;
...
}
或
switch ( (int)color)
{
case 0:
break;
...
}
答案 1 :(得分:1)
您可以直接查看Enum Types
试试这个:
private void foo()
{
switch( color )
{
case Color.RED:
{
}
break;
case Color.GREEN:
{
}
break;
case Color.BLUE:
{
}
break;
}
}