Ví dụ:Enum giá trị 0 mâu thuẫn
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);
}
Mã tại dòng C sẽ không biên dịch, nhưng dòng Một biên dịch tốt. Có điều gì đặc biệt về một enum với 0 giá trị mà nó được điều trị đặc biệt trong các trường hợp như thế này?
Có. Ở đây "0" có nghĩa là mặc định. "1" có nghĩa là gì? –
@David: Không có gì. 'Thực phẩm thực phẩm = 1;' sẽ không biên dịch. Tuy nhiên, bạn có thể * cast * bất kỳ chữ nào thành enum, vì vậy 'Foods food = (Foods) 1;' là tốt. –
Anthony đúng. Lý do bạn hoàn toàn có thể chuyển đổi chữ số 0 thành bất kỳ kiểu enum nào là các nhà thiết kế ngôn ngữ đã xác định nó là một tính năng hữu ích và đã viết nó vào đặc điểm kỹ thuật. – phoog