列舉 (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(); } }
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
全站熱搜
留言列表