zoukankan      html  css  js  c++  java
  • 枚举(enum)的常用操作

    枚举定义的相关内容就不在此说了;这里说说枚举的常用操作

    枚举与符号、值的转换

    获取所有的符号名

    FlagsAttribute特性的使用

    对枚举组合(通过按位或符号“|”)运用switch

     

    定义一个枚举用作后面的例子

    enum EnumName{

        Red = 1,

        Green,

        Blue = 4,

        White = 8,

        Black = 16

    }

     

    枚举与符号、值的转换

    EnumName en = EnumName.Green;

    //1.枚举转值

    int enValueInt = (int)en;    // enValueInt 被赋值为 2

    string enValueStr = en.ToString("D");    // enValueStr 被赋值为 "2"

    //2.值转枚举

    EnumName em = (EnumName)8;    // em 被赋值为 EnumName.White

    em = (EnumName)Enum.Parse(typeof(EnumName), 4.ToString());    // em 被赋值为 EnumName.Blue

    //3.符号转枚举

    em = (EnumName)Enum.Parse(typeof(EnumName), "Blue");    // em 被赋值为 EnumName.Blue

     

    获取所有的符号名

    foreach (string s inEnum.GetNames(typeof(EnumName)))   //通过 foreach 遍历枚举EnumName的定义

     

    FlagsAttribute特性的使用

    需要注意,枚举个元素的值除了1以外,必须是2的倍数,不能使用0,否则组合就得不到正确的值

    EnumName em = EnumName.Red | EnumName.Blue | White;

    Console.WriteLine(em);  // 输出 13;

    如果在EnumName定义的时候加上 Flags 特性,如:

    [Flags]

    enum EnumName{ .... }

    那么以上输出将变为   Red, Blue, White

    加了Flags特性以后可以通过 Console.Write((int)em) 的方式来输出数字值;

     

    对枚举组合(通过按位或符号“|”)运用switch
    Type t = typeof(em);

    string[] items = Enum.GetNames(t);

    foreach (string s in items)

    {

        EnumName n = (EnumName)Enum.Parse(t, s);

        if ((em & n) > 0)

        {

            switch(n){

                case EnumName.Red:   Console.Write(n); break;

                case EnumName.Green:   Console.Write(n); break;

                case EnumName.Blue:   Console.Write(n); break;

                case EnumName.White:   Console.Write(n); break;

                case EnumName.Black:   Console.Write(n); break;

            }

        }

    }

  • 相关阅读:
    关于Quartz .NET(V3.0.7)的简要说明
    .NET实现一个简单的IOC容器
    .NET中的控制反转及AutoFac的简单说明
    .NET异步程序设计——async&await
    .NET异步程序设计——任务并行库
    .NET异步程序设计——异步委托
    .NET异步程序设计——概念引入
    关于C#程序的单元测试
    关于Log4Net的使用及配置方式
    基于.net ,使用几种常见的NoSQL数据库
  • 原文地址:https://www.cnblogs.com/OwenWu/p/2094899.html
Copyright © 2011-2022 走看看