《你必須知道的.NET》--簡易不簡單:認識枚舉(Ⅲ)

本節主要內容包括:數組

  枚舉類型全解;spa

  位標記應用;.net

  枚舉應用規則。線程

Ⅰ、枚舉orm

  在哪裏能夠看到枚舉?打開每一個文件的屬性,咱們會看到只讀、隱藏的選項;操做一個文件時,你能夠採用只讀、可寫、追加等模式。blog

  在.net中能夠選擇以類的靜態字段來表達這種簡單的分類結構,可是更明智的選擇顯然是--枚舉!繼承

  全部的枚舉類型都隱式並且只能隱式的繼承自System.Enum類型,System.Enum類型是引用類型,繼承自System.ValueType的惟一不爲值類型的引用類型。字符串

  枚舉類型是值類型,分配於線程的堆棧中,自動繼承於Enum類型,可是自己不能被繼承;Enum類型是引用類型,分配於託管堆中,Enum自己不是枚舉類型,可是提供了操做枚舉類型的公用方法。table

        public enum week : int
        {
            sun = 7,
            mon = 1,
            tue, wed, thur, fri, sat,
            weekend = sun
        }

  a.類型轉換:由於枚舉類型本質上是證書類型的集合,所以能夠與整數類型進行相互的類型轉換,可是必須是顯式的。    
            int i = (int)week.fri;
            week j = (week)3;

    或者用Parse方法來間接完成。  week w = (week)Enum.Parse(typeof(week),"2");class

   b.與字符串的映射:

      包括ToString實例方法和Parse靜態方法。     

   c.不一樣枚舉的相互轉換: 顯示轉換,如 

      OtherWeek i = OtherWeek.mon;      

      week today = (week)i;

   d.與其餘引用類型轉換:

      Enum繼承自--ValueType,Icomparable,IFormattable,IConvertible.

      所以,能夠顯式轉換以上類型,和System.Object、System.Enum.

   e.經常使用方法:

      GetNames,獲取枚舉中符號名稱數組;

      GetValues,獲取枚舉中全部符號數組;

      IsDefined,判斷符號或者整數是否存在於枚舉中;

      GetUnderlyingType,返回枚舉實例的聲明類型。    
    

Ⅱ、位枚舉

  帶[Flags]特性來標記的枚舉。FlagsAttribute特性的做用是將枚舉成員處理爲位標記,而不是孤立的常數。  

  a.Enum.IsDefined方法不能應對位枚舉成員,能夠用該數值與枚舉成員進行「位與」運算,結果不爲0則表示該變量中包含該枚舉成員,如    if ((test & Color.Red) !=0)    b.Flags特性將影響ToString、Parse和Format方法的執行過程和結果。   
相關文章
相關標籤/搜索