首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> C# 入門

C# 深度探索 (11):列舉型別定義與模式應用

     編輯:C# 入門

C# 列舉:具名常數集合的型別安全封裝

列舉 (enum) 為一組相關常數定義統一型別,提供語意清晰、編譯期檢查、IntelliSense 支援等優勢。

基本定義與使用

enum Color {
    Red,
    Blue,
    Green
}

class Shape {
    public void Fill(Color color) {
        switch (color) {
            case Color.Red:   /* ... */ break;
            case Color.Blue:  /* ... */ break;
            case Color.Green: /* ... */ break;
            default: break;
        }
    }
}

底層型別與數值控制

// 預設底層型別 int,從 0 遞增
enum Color { Red, Blue, Green }  // Red=0, Blue=1, Green=2

// 指定底層型別
enum Priority : byte { Low, Medium, High, Critical }

// 手動指定數值
enum HttpStatus {
    OK = 200,
    NotFound = 404,
    ServerError = 500
}

// 位元旗標模式 (FlagsAttribute)
[Flags]
enum FileAccess {
    None = 0,
    Read = 1,
    Write = 2,
    Execute = 4,
    ReadWrite = Read | Write  // 3
}

列舉核心操作

操作語法範例
轉字串color.ToString()"Red"
轉數值(int)color0
字串轉列舉Enum.Parse<Color>("Red")Color.Red
檢查定義Enum.IsDefined<Color>(value)true/false
取得所有值Enum.GetValues<Color>()Color[]
位元運算access & FileAccess.Read!= 0 表示有讀取權限

列舉 vs 常數:優勢比較

特性const intenum
型別安全無 (皆為 int)強型別
分組相關常數靠命名慣例語言層級
IDE 提示無完整 IntelliSense
switch 完整性檢查無編譯器警告缺漏 case
位元旗標支援手動管理[Flags] 標準化

最佳實踐

  • 預設使用 int 底層型別,除非記憶體極度敏感
  • 列舉名稱用單數 (Color 非 Colors)
  • 成員用 PascalCase
  • 提供 None = 0 作為預設值
  • 位元旗標務必加 [Flags] 屬性
  • 避免在公開 API 頻繁變更列舉成員 (破壞二進位相容)

進階:模式比對 (C# 7.0+)

string GetColorName(Color c) => c switch {
    Color.Red => "紅色",
    Color.Blue => "藍色",
    Color.Green => "綠色",
    _ => "未知"
};
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved