zoukankan      html  css  js  c++  java
  • c#中的枚举

    枚举是用户定义的整数类型,它是强类型的,与类同级,通常用来表示一组常量。(成员可以使用汉字)

    public enum Sex:int  //可指定类型有:byte、sbyte、short、ushort、int、uint、long、ulong
            {
                男 = 0,   //可指定允许范围的整数,默认为0,以1为增量增加
                女 = 1
            }

    枚举的优点:

    1、枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值。

    2、枚举使代码更易于维护,有助于确保给变量指定合法的、期望的值。

    3、枚举使代码更易输入和读取。

    1、简单枚举

    • 枚举使用enum关键字来声明,与类同级。枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符。枚举本身的修饰符仅能使用public和internal。
    • 枚举是值类型,隐式继承自System.Enum,不能手动修改。System.Enum本身是引用类型,继承自System.ValueType。
    • 枚举都是隐式密封的,不允许作为基类派生子类。
    • 枚举类型的枚举成员均为静态,且默认为Int32类型。
    • 每个枚举成员均具有相关联的常数值。此值的类型就是枚举的底层数据类型。每个枚举成员的常数值必须在该枚举的底层数据类型的范围之内。如果没有明确指定底层数据类型则默认的数据类型是int类型。
    • 枚举成员不能相同,但枚举的值可以相同。
    • 枚举最后一个成员的逗号和大括号后面的分号可以省略

    2、标志枚举

    标志枚举要在顶部加[System.Flags]特性进行声明。而且枚举支持组合运算。

    这种位运算是非常有用的,在sql语句里也支持位运算。也就是说,把一个枚举运算后的结果存入数据库之后,还能够按照你的要求读取出来。比如:

    将一个"高帅"存如数据库的值存入数据库,那么存入去的就是整型5。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace enumApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                var man = People.高 | People.帅;  //赋值为101    计算方法001或上100,结果是101
                Console.WriteLine("高和帅的枚举值和为:"+(int)man);
                if ((man & People.高) == People.高)       //101 man 
                {                                    //001 高 逐位相与,
                    Console.WriteLine("此人:高");      //001 如果结果是高,就可以反推出man包含 高
                }
                else
                {
                    Console.WriteLine("此人:矮");
                }
                Console.ReadKey();
            }
    
           [System.Flags]
           public enum People:int 
            {
                高 = 1,  //001
                富 = 2,  //010
                帅 = 4,  //100
            }
        }
    }

    枚举。整数。字符串之间的转换

    public enum Sex
    {
    男,

    }

    static void Main(string[] args)
    {
    Console.WriteLine((int)Sex.女);//将枚举转换为int
    Console.WriteLine(Sex.女.ToString());//将枚举转换为string
    Sex sex1 = (Sex)1;//将int转换为枚举
    Console.WriteLine(sex1.ToString());
    Sex sex2 = (Sex)Enum.Parse(typeof(Sex), "女");//将string转换为枚举
    Console.WriteLine(sex2.ToString());
    Console.WriteLine(Enum.GetName(typeof(Sex),1));//将数字转换为枚举中对应的字符串
    }

  • 相关阅读:
    华为全联接大会2019,共创智能新高度
    CTDC2019首席技术官领袖峰会,AI赋能 智享5G
    2019全球体验设计峰会:体验赋能商业,创造更好体验
    全球闪存峰会旨在深化技术创新,增进闪存产业链上下游
    PyCon 2019火热来袭,与大数据、人工智能等专家一起探讨Python语言
    PHPConChina 2019 PHP开发者大会将于8月在上海举办!
    2019腾讯Live开发者大会(TLC),引领技术新趋势
    2019 HTML5深度应用开发实践
    2019年5G物联网关键技术与应用培训,了解5G网络发展现状及进展
    2019第二届企业云服务大会 -- 企业智变,云化未来
  • 原文地址:https://www.cnblogs.com/1016391912pm/p/11353700.html
Copyright © 2011-2022 走看看