Несогласованность значений перечисления 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, которое требует особого обращения в подобных случаях?

10
задан Moe Sisko 16 February 2012 в 03:09
поделиться