C#中的枚舉類型enum用法

定義一個簡單的枚舉類型:
   enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};        //這時候         Days.Sat = 0 ,後面依此遞增。

固然也能夠手動指定起始值:
   enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; //這樣就從1開始了。數據庫

          枚舉型的隱含類型爲 int 型, 例如 int x=(int)Days.Sat ; 一點問題沒有。據MSDN說枚舉類型的隱含類型能夠爲除了char之外的任意數字類型……        [        Every enumeration type has an underlying type, which can be any integral type except char. ]
          下面這個例程演示使用長整型做爲枚舉的隱含類型:

// keyword_enum2.cs
// Using long enumerators

using System;
public class EnumTest 
{
    enum Range :long {Max = 2147483648L, Min = 255L};
    static void Main() 
          {
       long x = (long)Range.Max;
       long y = (long)Range.Min;
        Console.WriteLine("Max = {0}", x);
        Console.WriteLine("Min = {0}", y);
          }
}
若是須要從新取回長整形值,也是一個轉換就能夠了。  long x = (long)Range.Max;

最有意思的仍是下面要說的,enum的[Flags]標記。啥也不說啦,看程序吧:
//The following code example illustrates the use and effect of the 
//System.FlagsAttribute attribute on an enum declaration.


// enumFlags.cs
// Using the FlagsAttribute on enumerations.
using System;ide

[Flags]
public enum FileAttribute
{
         ReadOnly= 0x01,
         Hide= 0x02,
         System= 0x04,
         Archived= 0x08
}編碼

class FlagTest
{
    static void Main()
         {
        FileAttributeoptions options= FileAttribute.ReadOnly| FileAttribute.System;
        Console.WriteLine(options);
        Console.WriteLine((int)options);
         }
}spa

輸出爲:
       
ReadOnly, System
5
看到了吧?呵呵。這就是經常使用的標誌位阿~ 在C#裏變得更簡單易用了。code

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};blog

1> 我給定一個值1,怎樣把對應的Sun以字符串的形式返回來?(經常使用在取數據庫裏的XXX_ID並轉換成對應的值的時候用。——不過有點硬編碼的感受。)
答:Convert.ChangeType( enumValue, enumType ).ToString();// enumValue=1; enumType=typeof(Days)字符串

2>我給定一個字符串"Sun",怎麼返回enum Day.Sun?
答: 能夠直接用 Enum.Parse( enumType, string,[boolean])來解決問題. ;例如這個例子, Enum.Parse(typeof(Day), "Sun", true) 就返回Day.Sun , 第3個參數指定是否大小寫敏感. 能夠省略.string

3>我想知道 enum Day 中全部的字符串值. 怎麼寫?
答: 這個貌似也很簡單哦, foreach(string name in Enum.GetNames(typeof(Day))) Console.WriteLine(name);   還有一個Enum.GetName() ,具體用法看MSDN去吧....it

來源:http://blog.163.com/li_crane/blog/static/19502097200822210217451/io

相關文章
相關標籤/搜索