C# 允許將十進位整數常數 0隱式轉換為任意列舉類型。除此之外,不存在其他整數到列舉的隱式轉換。
using System;
enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }
class Test {
public static void Main() {
Weekday day;
day = 0; // 合法:隱式轉換
Console.WriteLine(day); // 輸出:Sunday (或 0)
// day = 1; // 編譯錯誤:Cannot implicitly convert type 'int' to 'Weekday'
}
}
列舉的底層預設型別為 int,且第一個成員的值為 0。允許 0 隱式轉換是為了方便預設值初始化(如 Weekday day = 0; 相當於 Weekday day = Weekday.Sunday;)。其他整數值需要顯式轉換 (Weekday)1,以確保開發者明確意圖,避免誤用魔術數字。