zoukankan      html  css  js  c++  java
  • 枚举类型解析

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




      
     



     

  • 相关阅读:
    HDU 3247 Resource Archiver(AC自动机 + 状压DP + bfs预处理)题解
    HDU 3341 Lost's revenge (AC自动机 + DP + 变进制/hash)题解
    HDU 2457 DNA repair(AC自动机 + DP)题解
    HDU 2825 Wireless Password(AC自动机 + 状压DP)题解
    POJ 1625 Censored!(AC自动机 + DP + 大数 + 拓展ASCII处理)题解
    HDU 2243 考研路茫茫——单词情结(AC自动机 + 矩阵快速幂)题解
    POJ 2778 DNA Sequence(AC自动机 + 矩阵快速幂)题解
    HDU 4511 小明系列故事——女友的考验 (AC自动机 + DP)题解
    AJAX局部刷新和异步技术
    方法视图(FBV)和类视图(CBV)添加装饰器
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1959324.html
Copyright © 2011-2022 走看看