10
示例代碼:枚舉0值不一致
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的枚舉在這種情況下得到特殊處理?
是的。這裏「0」表示默認值。 「1」是什麼意思? – 2012-02-16 03:16:59
@David:什麼都沒有。 '食物食物= 1;'不會編譯。但是,你可以將任何文字轉換成枚舉,所以'Foods food =(Foods)1;'就好了。 – 2012-02-16 03:18:29
安東尼是對的。您可以將文字零隱式轉換爲任何枚舉類型的原因是語言設計者將其確定爲有用的功能並將其寫入規範中。 – phoog 2012-02-16 04:35:30