示例代码:
public enum Foods
{
Burger,
Pizza,
Cake
}
private void button1_Click(object sender, EventArgs e)
{
Eat(0); // A
Eat((Foods)0); // B
//Eat(1); // C : won't compile : cannot convert from 'int' to 'Foods'
Eat((Foods)1); // D
}
private void Eat(Foods food)
{
MessageBox.Show("eating : " + food);
}
代码中的C行无法编译,但A行可以编译通过。在这种情况下,枚举值为0的枚举类型是否有特殊处理?
Foods food = 1;
无法编译。不过,你可以将任何字面量强制转换为枚举,所以Foods food = (Foods)1;
就没问题了。 - Cody Gray