Ejemplo:Enum 0 valor inconsistencia
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ódigo en la línea C no se compilará, pero la línea A compila bien. ¿Hay algo especial acerca de una enumeración con valor 0 que le otorgue un trato especial en casos como este?
Sí. Aquí "0" significa predeterminado. ¿Qué significa "1"? –
@David: Nada. 'Foods food = 1;' no compilaría. Sin embargo, puedes * moldear * cualquier literal en una enumeración, por lo tanto, 'Comida alimentos = (Alimentos) 1;' está bien. –
Anthony tiene razón. La razón por la que puede convertir implícitamente el cero literal a cualquier tipo de enumeración es que los diseñadores del lenguaje determinaron que era una característica útil y la escribieron en la especificación. – phoog