首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 隱含列舉轉換:唯一允許整數 0 轉換為任意列舉型別

     編輯:關於C語言

隱含列舉轉換 是 C# 型別系統中極其特殊的一條規則:僅允許十進位整數常值 0 隱含轉換為任意列舉型別。其他任何整數值(包括變數 0)都不適用。

程式碼驗證

using System;
enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }

class Test {
    static void Main() {
        Weekday day;
        day = 0;          // ✅ 合法:常值 0 隱含轉換
        Console.WriteLine(day); // 輸出 0 (Sunday)
        // day = 1;       // ❌ 編譯錯誤 CS0131:int 無法隱含轉 Weekday
    }
}

設計考量

  • 0 通常對應列舉的預設值(第一個成員),符合「預設初始化為零」的語意。
  • 避免 Weekday day = 5; 這類魔術數字直接指派,強制使用 Weekday.Friday 提升可讀性與型別安全。
  • 若需從整數轉換,請使用顯式轉型:day = (Weekday)3;。

延伸:default(T) 與列舉

Weekday d = default; // 等同 0,合法
var d2 = default(Weekday); // 同樣合法

這與隱含列舉轉換規則一致,default 產生的零值可隱含轉為列舉型別。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved