c# 枚舉(Enum)


C#枚舉(Enum)小結

 

枚舉是一組命名整型常量。枚舉類型是使用 enum 關鍵字聲明的。

C# 枚舉是值類型。換句話說,枚舉包含自己的值,且不能繼承或傳遞繼承。

聲明 enum 變量

聲明枚舉的一般語法:

enum <enum_name> { enumeration list };


其中,

  • enum_name 指定枚舉的類型名稱。
  • enumeration list 是一個用逗號分隔的標識符列表。

枚舉列表中的每個符號代表一個整數值,一個比它前面的符號大的整數值。默認情況下,第一個枚舉符號的值是 0.例如:

enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };


實例
下面的實例演示了枚舉變量的用法:

實例
using System;

public class EnumTest
{
    enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat };

    static void Main()
    {
        int x = (int)Day.Sun;
        int y = (int)Day.Fri;
        Console.WriteLine("Sun = {0}", x);
        Console.WriteLine("Fri = {0}", y);
    }
}
當上面的代碼被編譯和執行時,它會產生下列結果:

Sun = 0
Fri = 5

 

 一個枚舉的關聯值或隱式地、或顯示地被賦值。如果枚舉成員的聲明中具有 constant-expression 初始值設定項,則該常量表達式的值(它隱式轉換為枚舉的基礎類型)就是該枚舉成員的關聯值。如果枚舉成員的聲明不具有初始值設定項,則它的關聯值按下面規則隱式地設置:

  如果枚舉成員是在枚舉類型中聲明的第一個枚舉成員,則它的關聯值為零。否則,枚舉成員的關聯值是通過將前一個枚舉成員(按照文本順序)的關聯值加 1 得到的。這樣增加后的值必須在該基礎類型可表示的值范圍內;否則,會出現編譯時錯誤。有關枚舉類型成員關聯值賦值案例,參考下例:

using System;

namespace Test
{
    public enum Day : uint  //如果不設置數據類型,默認為 int
    { Mon=1,Tue=2,Wed=3,Thu=4,Fri=5,Sat,Sun}
    class EnumType
    {
        public static void Main(string[] args)
        {
            Console.WriteLine(ChooseDay(Day.Sun));
            Console.WriteLine(ChooseDay(Day.Mon));
        }
        static string ChooseDay(Day d)
        {
            string tmp = string.Empty;
            switch (d)
            { 
                case Day.Mon:
                    tmp = string.Format("你選擇一周中的第{0}天(即周一),工作",(uint)d);
                    break;
                case Day.Tue:
                    tmp = string.Format("你選擇一周中的第{0}天(即周二),工作", (uint)d);
                    break;
                case Day.Wed:
                    tmp = string.Format("你選擇一周中的第{0}天(即周三),工作", (uint)d);
                    break;
                case Day.Thu:
                    tmp = string.Format("你選擇一周中的第{0}天(即周四),工作", (uint)d);
                    break;
                case Day.Fri:
                    tmp = string.Format("你選擇一周中的第{0}天(即周五),工作", (uint)d);
                    break;
                case Day.Sat:
                    tmp = string.Format("你選擇一周中的第{0}天(即周六),休息", (uint)d);
                    break;
                case Day.Sun:
                    tmp = string.Format("你選擇一周中的第{0}天(即周日),休息", (uint)d);
                    break;
                default:
                    tmp = "不合法";
                    break;
            }
            return tmp;
        }
    }
}
復制代碼
//Execation Result

你選擇一周中的第7天(即周日),休息
你選擇一周中的第1天(即周一),工作
請按任意鍵繼續. . .

 

 

調用枚舉

    public enum CommunicationState
    {
        /// <summary>
        /// 位置狀態
        /// </summary>
        Unknown = 0,
        /// <summary>
        /// 等待用戶登錄
        /// </summary>
        WaitforUser = 1,
        /// <summary>
        /// 等待用戶輸入密碼
        /// </summary>
        WaitforPass = 2,
        /// <summary>
        /// 等待用戶指令
        /// </summary>
        WaitforCmd = 3,
        /// <summary>
        /// 接收數據中
        /// </summary>
        Receiving = 4,
        /// <summary>
        /// 斷開連接
        /// </summary>
        Disconnected = 5
    }



  private CommunicationState m_ComState = CommunicationState.Unknown;

  this.m_ComState = CommunicationState.WaitforUser;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM