CLR 保證:所有記憶體配置時預設為 0(位元全 0)。實值型別 new T()、陣列元素、欄位初始值皆為 0。無法阻止使用者建立「全 0」實例。
public enum Planet
{
Mercury = 1, Venus = 2, Earth = 3, Mars = 4,
Jupiter = 5, Saturn = 6, Neptune = 7, Uranus = 8, Pluto = 9
}
Planet p = new Planet(); // p = 0 (二進位全 0)
// 0 不在列舉定義值中 → 無效狀態!
// 任何假設「列舉值一定有效」的程式碼將失效
public struct ObservationData
{
public Planet Target; // 預設 0 → 無效 Planet
public double Magnitude; // 預設 0.0 → 合理
}
var data = new ObservationData(); // Target 為無效值!
public enum Planet
{
None = 0, // 預設值,語意:「未指定/無」
Mercury = 1,
Venus = 2,
// ...
}
Planet p = new Planet(); // p = Planet.None → 有效!
永遠為列舉定義值為 0 的成員(通常命名 None、Unknown、Default)。這使「未初始化」成為合法、可檢測的狀態,而非錯誤。