程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#的枚舉Enum注意的問題

C#的枚舉Enum注意的問題

編輯:C#入門知識

前段時間,由於在項目中不小心把同一個枚舉中的兩個不同項寫成了同一個值,項目編譯正常。如下:

    enum MyEnum
    {
        A = 1,
        B = 1
    }
好奇之下寫了代碼進行驗證:

    enum MyEnum
    {
        A,
        B = 2,
        C,
        D = 2,
        E,
        F = 1,
        G
    }
竟然發現:

第一點:

            int a = (int)MyEnum.A;                  // a = 0
            int c = (int)MyEnum.C;                  // c = 3
            int e = (int)MyEnum.E;                  // e = 3
            int g = (int)MyEnum.G;                  // g = 2
  (1)、如果第一項沒指定值,默認為0。

  (2)、項的值在枚舉中不一定唯一。

  (2)、如果沒指定項的值,後面項的值“總是”(不因任何原因,如已經存在值)等於前面項的值加1。

  (3)、枚舉的項不一定是從前到後按小到大排序的。
 

第二點:

            bool result1 = (MyEnum.C == MyEnum.E);  // true
            bool result2 = (MyEnum.B == MyEnum.G);  // true
            MyEnum myE = (MyEnum)2;                 // MyEnum.B
  (1)、枚舉是值類型,在運算時都是用“值”來做運算的。

  (2)、當值轉換成枚舉時,從前到後搜索。

 

寫得不好多見諒,歡迎指正及指教。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved