C#-------------枚舉

來源:互聯網
上載者:User

標籤:fine   .com   write   tostring   --   轉換   logs   混合   img   

聲明一個枚舉:

    public enum Week    {        one = 1,        two = 2,        three    }

反編譯

我們可以看到,我們建立的枚舉自動繼承自System.Enum,那麼Enum又是怎麼樣的呢?

可以看到Enum是一個抽象類別,它繼承自ValueType但它又不是一個實值型別,所以它有點特殊

那麼枚舉中到底可以有哪些類型呢?

 

 通過查看原始碼我們看到了一個ValuesAndNames這個類,所以說,只要是不大於ulong的整數都可以作為值

 既然我們知道了怎麼聲明,接下來就是如何使用了以及轉換

掌握了上面的基本也就掌握了枚舉,當然如果你先判斷一個值是否在枚舉中,列舉枚舉的值該怎麼辦呢?

  這時候我們就需要Enum類來協助我們了

  判斷一個值是否在枚舉中

        static void Main(string[] args)        {            Console.WriteLine(Enum.IsDefined(typeof(Week),1));//true            Console.Read();        }

  列舉值:

            foreach (var item in Enum.GetNames(typeof(Week)))            {                Console.WriteLine(item);            }

    當然上面的枚舉有時不夠用怎麼辦,假如我有一個顏色的枚舉,紅,黃,白假如紅和黃混合就是紅黃色0-0,那麼我們是否需要在建立一個枚舉值呢?

  答案可以是需要,也可以不需要,我們可以使用位枚舉

    [Flags]    public enum Week    {        hong = 0x1,        huang = 0x10    }
        static void Main(string[] args)        {            Week w = Week.hong | Week.huang;            Console.WriteLine(w.ToString());            Console.Read();        }

那如果要判斷一個值是否在枚舉中呢?

            Week w = Week.hong | Week.huang;            Console.WriteLine((w&Week.hong)!=0);

 

C#-------------枚舉

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.