zoukankan      html  css  js  c++  java
  • 基础知识---枚举

    一、枚举的定义

    枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。

    C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。

     二、枚举的声明

    声明枚举的一般语法:

    enum <enum_name>
    { 
        enumeration list 
    };

    其中,

    • enum_name 指定枚举的类型名称。
    • enumeration list 是一个用逗号分隔的标识符列表。

    枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0.例如:

    enum Day { Sun, Mon, tue, Wed, thu, Fri, Sat };

    在编译枚举类型时,会把每个符号转换成类型的一个常量字段很一个int32的公共实例字段,不够后者不能通过代码调用。

    因为枚举的符号是一个常量字段,如果在不同的程序集引用,可能会出现一些版本问题,

    每个枚举都有一个基础类型, 包含 byte,sbyte,short,ushort,uint,long ,ulong, 和int (最常用,C#默认的类型) 

    三、枚举的转换

    枚举转换成整数

    Day today = Day.Wed;
    int dayNumber = (int)today;

    枚举转换成字符串

    Day today = Day.Wed;
    string todayStr = today.ToString();

    四、枚举的方法

    枚举的主要三个方法: Enum.GetName() 、Enum.GetNames()、Enum.GetValues()

    Day today = Day.Wed;
    string name = Enum.GetName(typeof(Day), 3);
    Enum.GetNames(typeof(Day))
    Enum.GetValues(typeof(Day))

    GetName:获取单个枚举的名称

    GetNames:获取所有枚举的名称

    GetValues:获取所有枚举的值

    五、标志枚举(二进制枚举)

    定义枚举时,添加Flags特性,之后便可以对这些值执行AND、OR、NOT、XOR按位运算

    public enum MyEnum
    {
        MyEnum1 = 1, //0x1
        MyEnum2 = 1 << 1, //0x2
        MyEnum3 = 1 << 2, //0x4
        MyEnum4 = 1 << 3, //0x8
        MyEnum5 = 1 << 4, //0x10
        MyEnum6 = 1 << 5, //0x20
        MyEnum7 = 1 << 6 //0x40
    }

    此时可以使用位移运算方便的获取多个枚举的组合变量:

    MyEnum myEnum = MyEnum.MyEnum1 | MyEnum.MyEnum2;
    myEnum |= myEnum | MyEnum.MyEnum3;

    或在组合中删除其中一项枚举:

    myEnum ^= MyEnum.MyEnum1;
    myEnum &= ~MyEnum.MyEnum2;

    需要判断是否包含某一枚举值时,可以使用以下方法判断:

    (curMyEnum & MyEnum.Enum1) > 0

    | 并集  &  交集  ^  差集

  • 相关阅读:
    算法导论读书笔记(未完成)
    工作心理学(未完成)
    面试疑难点解析
    aop难点解析。
    Mybatis框架解析之Builder解析
    HashMap原理总结
    编程基础的重要性(程序员之路)
    Java HashMap详解
    Java源码分析系列之HttpServletRequest源码分析
    JFinal源码 分析之 Core包分析
  • 原文地址:https://www.cnblogs.com/xuwendong/p/10369597.html
Copyright © 2011-2022 走看看