示例代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
C行的代码无法编译,但A行编译正常.有一个0值的枚举是否有特殊处理在这样的情况下得到特殊处理?
Cod*_*ray 14
是的,文字0可以隐式转换为任何枚举类型,并表示该类型的默认值.根据C#语言规范,特别是关于枚举的第1.10节:
任何枚举类型的默认值是转换为枚举类型的整数值零.在变量自动初始化为默认值的情况下,这是给予枚举类型变量的值.为了使枚举类型的默认值易于使用,文字0隐式转换为任何枚举类型.对于易于使用的枚举类型的默认值,文字0隐式转换为任何枚举类型.
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |