列舉 (Enumerations) 是一群相關連的符號,且具有相同的型別

為了簡化程式的撰寫及增進程式的閱讀性。

範例程式: 

 
class Program
 {
        /*1.預設列舉中每個項目類型是int。
        可使用冒號指定其他整數數字型別 (Numeric Type)
        如果沒指定值,則預設Days.Sunday 的值為 0,
        而 Days.Monday 的值為 1,以此類推*/
        enum Days 
        {
            Sunday,
            Monday, 
            Tuesday, 
            Wednesday, 
            Thursday, 
            Friday, 
            Saturday 
        };
        
        //2.例如此處指定為byte
        enum Months : byte
        {Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};        
        
        enum Genders : int
        {
            Male,
            Female            
        }

        //3.可指派任何值給列舉值中的項目,而且也可以使用計算值:
        enum MachineState
        {
            PowerOff = 0,
            Running = 5,
            Sleeping = 10,
            Hibernating = Sleeping + 5
        }       
        
        static void Main(string[] args)
        {
            Days today = Days.Monday;
            int dayNumber = (int)today;
            //執行結果為1
            Console.WriteLine
            ("{0} is day number #{1}.",today,dayNumber);

            //執行結果為11
            Months thisMonth = Months.Dec;
            byte monthNumber = (byte)thisMonth;
            Console.WriteLine
            ("{0} is month number #{1}.",thisMonth,monthNumber);

            
            Genders g1 = Genders.Male;
            Genders g2 = Genders.Female;
            //執行結果為Male
            Console.WriteLine(g1);
            //執行結果為Female
            Console.WriteLine(g2);


            Console.ReadLine();
        }     
 }
  

 
 所有的列舉都是 System.Enum 型別的執行個體。無法從 System.Enum 衍生新類別
 

1.GetName(Type, Object) 取得Object對應到列舉的名稱

 
string s = Enum.GetName(typeof(Days), 4);
//執行結果Tuesday
Console.WriteLine(s);

2.GetNames(Type) 取得指定列舉的「名稱」陣列

 
Console.WriteLine("The names of the Days Enum are:");
foreach (string str in Enum.GetNames(typeof(Days)))
/*執行結果會把值全部列出來
/The names of the Days Enum are:
Sunday
Monday 
Tuesday 
Wednesday 
Thursday 
Friday 
Saturday*/
Console.WriteLine(str);

3.GetValues(Type)取得指定列舉的「值」陣列

 
Console.WriteLine("The values of the Days Enum are:");
foreach (int i in Enum.GetValues(typeof(Days)))
/*執行結果會把值全部列出來
/The names of the Days Enum are:
Sunday
Monday 
Tuesday 
Wednesday 
Thursday 
Friday 
Saturday*/
Console.WriteLine(i);

4.IsDefined(Type,Object)判斷指定的物件是否在指定的列舉中有定義

//執行結果 True,False
Console.WriteLine (Enum.IsDefined(typeof(Days), 1));
Console.WriteLine(Enum.IsDefined(typeof(Days), "Mon")); 

5.Parse(Type, string)將指定的值(列舉裡的名稱或值)轉換成對應的列舉型別

//執行結果Monday,Monday
Console.WriteLine ((Days)Enum.Parse(typeof(Days), "1"));
//將字串表示轉換為對等列舉型別物件
Console.WriteLine((Days)Enum.Parse(typeof(Days), "Monday"));





參考來源:

http://vito-dotnet.blogspot.tw/2011/12/blog-post.html

http://blog.yehyeh.net/?p=603

http://msdn.microsoft.com/zh-tw/library/cc138362.aspx

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 小豆干 的頭像
    小豆干

    小豆干就是我唷

    小豆干 發表在 痞客邦 留言(0) 人氣()