enum : C#中的枚舉類型,原來有這麼多用法)

來源:互聯網
上載者:User

今天來的時候開啟了MSDN掃了一眼C#裡的枚舉類型~~ 驀然發現這東西還有些新玩法。

http://msdn.microsoft.com/zh-cn/library/sbbt4032.aspx#Y791

首先是簡單介紹,……在此略過。因為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;

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

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

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

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

1> 我給定一個值1,怎樣把對應的Sun以字串的形式返回來?
答:Convert.ChangeType( enumValue,
enumType ).ToString();// enumValue=1; enumType=typeof(Days) 感謝網友lanyur的回複,
正確的方法應該是 ((Days)1).ToString();

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.