一週學會C#(枚舉二)

一週學會C#(枚舉二)

C#才鳥(QQ:249178521

4.使用枚舉<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

枚舉隱式派生於System.Enum

namespace System

{

    public abstract class Enum ...

    {  

        // 靜態函數

        public static string[] GetNames(Type);

        ...

        // 實例函數

        public override string ToString();

        // 構造函數

        protected Enum();

    }

}

Suit trumps = Suit.Clubs;

string[] names = System.Enum.GetNames(trumps.GetType());

...

Console.Write(names[0]);          // Clubs

Console.Write(trumps);            // Clubs

Console.Write("{0}", trumps);     // Clubs

Console.Write(trumps.ToString()); // Clubs

Console.Write((Suit)24);          // 24

System.EnumSystem命名空間的一個抽象類。它實現了一系列的接口:

              public abstract class Enum

              : IComparable, IFormattable, IConvertible

       {

               ...

      

枚舉(例如Suit)隱式派生於System.Enum

System.Enum是一個特殊的類,它只能被用作一個枚舉類型的隱含基類。

你不能自己從System.Enum顯式派生自己的類。

你不能創造一個System.Enum的實例。(它的構造函數是protected,並且它是一個抽象類)。

5.枚舉的操作符

·       枚舉變量當作整型變量看待,但在大部分情況下不能使用移位操作符。

6.枚舉的轉換

·       隱式轉換

w       0 可以轉爲任一 enum類型

w       從不拋出錯誤

·       顯式轉換

w       enum enum 通過內在類型轉換

w       enum 轉爲數值類型(包括char)

w       從數值類型(包括char) 轉爲 enum

w       從不拋出錯誤

0可以被轉爲任一enum類型,不管enum類型包不包括0

如果你使用Console.WriteLine顯視一個枚舉值,它好像被隱式轉換爲一個字符串。但這是一種錯覺,下面的例子說明了這一點:

                     enum Suit { Clubs, Diamonds, Hearts, Spades }

           Suit trumps = Suit.Clubs;

           Console.WriteLinetrumps;//顯視爲Clubs

                     string s = trumps;//錯誤,trumps不是字符串

Console.WriteLine完成的從enumstring 的類型轉換是通過System.EnumIFormattable接口實現的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章