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

C# 語法練習 (6):列舉型別完整指南

     編輯:關於C#

C# Enum 列舉型別深度解析

列舉型別讓開發者能為一組相關的常數命名,提升程式碼可讀性與維護性。本文涵蓋列舉的基本操作、數值轉換、Flags 屬性位元運算等進階技巧。

一、列舉基本操作:顯示名稱與數值

using System;

class MyClass
{
    enum MyEnum { AA, BB, CC }; // 列舉定義不可在方法內部

    static void Main()
    {
        MyEnum e = MyEnum.CC;
        Console.WriteLine(e);           // 輸出: CC (名稱)
        Console.WriteLine((byte)e);     // 輸出: 2 (byte 數值)
        Console.WriteLine((int)e);      // 輸出: 2 (int 數值)
        Console.WriteLine(Convert.ToString(e)); // 輸出: CC

        Console.ReadKey();
    }
}

二、數值與字串轉換為列舉

using System;

class MyClass
{
    enum MyEnum { AA, BB, CC };

    static void Main()
    {
        MyEnum e;

        // 數值轉列舉
        e = (MyEnum)1;
        Console.WriteLine(e); // 輸出: BB

        // 字串轉列舉
        e = (MyEnum)Enum.Parse(typeof(MyEnum), "BB");
        Console.WriteLine(e); // 輸出: BB

        Console.ReadKey();
    }
}

三、取得所有名稱與數值

using System;

class MyClass
{
    enum MyEnum { AA, BB, CC };

    static void Main()
    {
        // 取得所有名稱
        foreach (string s in Enum.GetNames(typeof(MyEnum)))
        {
            Console.WriteLine(s); // AA / BB / CC
        }

        // 取得所有數值
        foreach (int n in Enum.GetValues(typeof(MyEnum)))
        {
            Console.WriteLine(n); // 0 / 1 / 2
        }

        Console.ReadKey();
    }
}

四、自訂列舉數值

列舉預設為 int、從 0 起始遞增,但可手動指定數值。

using System;

class MyClass
{
    enum MyEnum { AA = 2, BB, CC = 7, DD, EE };

    static void Main()
    {
        foreach (int i in Enum.GetValues(typeof(MyEnum)))
        {
            Console.WriteLine(i); // 2 / 3 / 7 / 8 / 9
        }

        Console.ReadKey();
    }
}

五、指定列舉底層型別

可使用除 char 外的所有整數型別(byte、short、int、long 等)。

using System;

class MyClass
{
    enum MyEnum : byte { AA, BB, CC, DD };

    static void Main()
    {
        string[] names = Enum.GetNames(typeof(MyEnum));
        foreach (string s in names) Console.WriteLine(s); // AA / BB / CC / DD

        byte[] values = (byte[])Enum.GetValues(typeof(MyEnum));
        foreach (byte n in values) Console.WriteLine(n); // 0 / 1 / 2 / 3

        Console.ReadKey();
    }
}

六、Flags 列舉與位元運算

使用 2 的冪次方數值,配合 [Flags] 屬性,可進行位元組合運算。

using System;

class MyClass
{
    enum MyEnum
    {
        AA = 0x0,
        BB = 0x1,
        CC = 0x2,
        DD = 0x4,
        EE = 0x8,
        FF = 0x10,
        GG = 0x20,
        HH = 0x40
    }

    static void Main()
    {
        MyEnum es = MyEnum.CC | MyEnum.DD; // 位元 OR 運算
        Console.WriteLine(es); // 輸出: 6 (或 CC, DD 若加 [Flags])

        Console.ReadKey();
    }
}

重點整理

  • Enum.Parse 可將字串轉為列舉,需注意大小寫。
  • Enum.GetNames / GetValues 適合動態列舉所有成員。
  • 自訂數值時,未指定的成員會自動遞增(如 BB 緊隨 AA=2 成為 3)。
  • 位元旗標列舉建議加上 [Flags] 屬性,ToString() 會自動顯示組合名稱(如 "CC, DD")。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved