枚举类型解析

所有的枚举类型都是隐式继承自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




  
 

 



 

你可能感兴趣的:(枚举)