1. 程式人生 > >C#高階程式設計第六天----列舉

C#高階程式設計第六天----列舉

列舉

定義列舉用到的關鍵字:enum

 public enum TimeOfDay

        {

            Monring = 0,

            Afternoon = 1,

            Evening = 2

        }

        static void Main(string[] args)

        {

            int x=(int)TimeOfDay.Afternoon;

            Console.WriteLine(x);

            Console.ReadKey();

        }

建立列舉的優點:

1.是程式碼易於維護,因為確保給變數指定合法的,期望的值.

2.程式碼清晰,允許用描述性的名稱拜師整數值,而不是含義模糊,變化多端的數來表示.

3.易於鍵入(通過使用.符號)

本例中TimeOfDay.Afternoon返回數字1.使用美劇一般和合適的值傳遞給方法,並在switch語句中迭代可能的值.

 public enum TimeOfDay

        {

            Monring = 0,

            Afternoon = 1,

            Evening = 2

        }

        static void Main(string[] args)

        {            

            WriteGreeting(TimeOfDay.Afternoon);

            Console.ReadKey();

        }

        static void WriteGreeting(TimeOfDay timeOfDay)

        {

            switch (timeOfDay)

            {

                case TimeOfDay.Monring:

                    Console.WriteLine("good monring");

                    break;

                case TimeOfDay.Afternoon:

                    Console.WriteLine("cood afternoon");

                    break;

                case TimeOfDay.Evening:

                    Console.WriteLine("good evening");

                    break;

                default:

                    break;

            }

        }

C#中列舉的真正強大之處使他們在後臺會例項化為派生於基類的System.Enum的結構.這表示可以對他們呼叫方法,執行有用的任務.一旦程式碼編譯好,美劇就成為了進本型別,intfloat類似.

使用前面的例子獲取美劇的字串表示.

TimeOfDay time = TimeOfDay.Afternoon;

Console.WriteLine(time.ToString());

字串型別轉換為列舉型別

TimeOfDay time2 = (TimeOfDay)Enum.Parse(typeof(TimeOfDay), "afternoon", true);

Console.WriteLine((int)time2);

從字串型別轉化為列舉型別需要用到函式Enum.Parse(),這個方法需要三個引數,第一個是要轉換的列舉累心,用關鍵字typeof包起來,第二個是要轉換的字串(一定是列舉中有的),第三個是否忽略大小寫.

注意:列舉型別的基型別是除 Char 外的任何整型,所以列舉型別的值是整型值。什麼意思呢?

看下例:

enum Colors{Red,Green,Blue,Yellow}//Red=0,Green=1,Blue=2,Yellow=3,預設從0開始,如果指定red=3,則從3開始

Enum-->string

利用Tostring()方法.

Colors color=Colors.Red;

strong str = color.ToString();

string-->Enum

利用Enum的靜態方法Parse()

Colors color=(Colors)Enum.Parse(typeof(Colors),”red”,blue)  

string str = color.ToString();

Console.WriteLine(str);

Console.ReadKey();

Enum-->int

直接使用強制轉換 

int blue=(int)Colors.Blue;

int-->Enum

呼叫方法

(1)可以強制轉換將整型轉換成列舉型別。

   例如:Colors color = (Colors)2 ,那麼color即為Colors.Blue

(2)利用Enum的靜態方法ToObject

   public static Object ToObject(Type enumType,int value)

   例如:Colors color = (Colors)Enum.ToObject(typeof(Colors), 2),那麼color即為Colors.Blue

應該沒有誰願意用第二種辦法吧,想裝13的除外.

如果要判斷某個整型是否定義在列舉中的方法:Enum.IsDefined.

Enum.Isdefined(typeof(Colors),number)