枚舉類型解析

來源:互聯網
上載者:User
所有的枚舉類型都是隱式繼承自System.Enum類型,Enum類型是繼承自System.ValueType類型唯一不為實值型別的參考型別。

 

public abstract class Enum:ValueType,IComparable,IFormattable,IConvertible

 

枚舉定義:

 

enum FileType
    {
        Txt=1,
        Exe,
        Meg
    }

    /// <summary>
    /// 為啥WorkType 就可以從int 派生
    /// </summary>
    enum  WorkType : int
    {
        A,
        B
    }

 

 
 為什麼System.Enum是參考型別?
 因為所有的枚舉類都隱式繼承System.Enum,所以System.Enum 是參考型別。因為實值型別不能被繼承。

為什麼在ValueType下實現一個Enum?
主要是實現對枚舉類型公用成員與公用方法,任何繼承枚舉類型都自動繼承了Enum中實現的方法。

Enum 類型與枚舉類型的關係?
枚舉類型是實值型別,分配線上程的對戰上,自動繼承System.Enum類型,但是本身不能被繼承;
Enum類型是參考型別,分配在託管堆上,Enum類型本身不是枚舉類型,但是提供了操作枚舉類型的公用方法。

• 枚舉類型用 new 初始化後枚舉值為0
 枚舉的值為0
• 枚舉類型支援自增或自減

常用方法

• Enum.GetNames(Enum 類型)
• Enum.GetValues(Enum 類型)
• Enum.IsDefined(Enum ,“”):判斷枚舉中是否包含命名符號
• Enum.
    enum Week
    {
        Mon,
        Third
    }
    
enum Name:byte
    {
        a,
        b
    }

Console.WriteLine (Enum.GetUnderlyingType(typeof(Week)));
Console.WriteLine (Enum.GetUnderlyingType (typeof(Name)));

 輸出結果:
System.Int32
System.Byte

位枚舉
     位枚舉一般2的冪來定義。
     enum FileType
    {
        Read=0x01,
        Write=0x02
    }
    

    [Flags]
enum FileTypePro
    {
        Read=0x01,
        Write=0x02
    }

//調用語句
//位標記枚舉
        FileType fileType=FileType.Read | FileType.Write ;
        Console.WriteLine ("FileType.Read | FileType.Write="+fileType);
        
        FileTypePro fileTypePro=FileTypePro.Read | FileTypePro.Write ;
        Console.WriteLine ("FileTypePro.Read | FileTypePro.Write="+fileTypePro);
Console.WriteLine ("0x03="+(FileTypePro)0x03);

 


輸出:
FileType.Read | FileType.Write=3
FileTypePro.Read | FileTypePro.Write=Read, Write
0x03=Read, Write

  
 

 

 

聯繫我們

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