如果在C#中声明枚举,则默认类型为int.
那么为什么在case语句或其他实例中使用枚举时你必须明确重铸才能使用这些值?如果您必须明确表达或者我在这里做错了什么,那么拥有基础类型有什么意义?
private enum MyEnum
{
Value1,
Value2,
Value3
}
switch (somevalue)
{
case (int)MyEnum.Value1:
someothervar = "ss";
break;
case (int)MyEnum.Value2:
someothervar = "yy";
break;
case (int)MyEnum.Value3:
someothervar = "gg";
break;
}
Run Code Online (Sandbox Code Playgroud)
Jar*_*Par 15
somevalue的类型是什么?如果类型是MyEnum,则铸造是不必要的,并且应该没有错误.
如果类型是int然后是,则必须转换为MyEnum才能正确切换/大小写.但是你可以通过转换值而不是每个case语句来使这更简单一些.例如
switch( (MyEnum)somevalue ) {
case MyEnum.Value1: ...
}
Run Code Online (Sandbox Code Playgroud)
如果somevalue是 类型MyEnum,则不必强制转换为int.
public enum Color
{
Red,
Blue,
Green
}
class Program
{
static void Main(string[] args)
{
Color color = Color.Red;
switch (color)
{
case Color.Red:
break;
case Color.Blue:
break;
case Color.Green:
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)