在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。[1]  是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。

在计算机,枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C#枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。

声明枚举的一般语法:

enum <enum_name>
{ enumeration list
};

其中,

enum_name 指定枚举的类型名称。

enumeration list 是一个用逗号分隔的标识符列表。

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

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

下面的实例演示了枚举变量的用法:

using System;public class EnumTest
{enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat };static void Main(){int x = (int)Day.Sun;int y = (int)Day.Fri;Console.WriteLine("Sun = {0}", x);Console.WriteLine("Fri = {0}", y);}
}

当上面的代码被编译和执行时,它会产生下列结果:

Sun = 0
Fri = 5

System.Enum 类型和枚举约束 System.Enum 类型是所有枚举类型的抽象基类。它提供多种方法来获取有关枚举类型及其值的信息。有关更多信息和示例,请参阅 System.Enum API 参考页。

从 C# 7.3 开始,你可以在基类约束中使用 System.Enum(称为枚举约束),以指定类型参数为枚举类型。所有枚举类型也都满足 struct 约束,此约束用于指定类型参数为不可为 null 的值类型。

对于任何枚举类型,枚举类型与其基础整型类型之间存在显式转换。如果将枚举值转换为其基础类型,则结果为枚举成员的关联整数值。

public enum Season
{Spring,Summer,Autumn,Winter
}public class EnumConversionExample
{public static void Main(){Season a = Season.Autumn;Console.WriteLine($"Integral value of {a} is {(int)a}");  // output: Integral value of Autumn is 2var b = (Season)1;Console.WriteLine(b);  // output: Summervar c = (Season)4;Console.WriteLine(c);  // output: 4}
}

使用 Enum.IsDefined 方法来确定枚举类型是否包含具有特定关联值的枚举成员。

对于任何枚举类型,都存在分别与 System.Enum 类型的装箱和取消装箱相互转换。

C# 枚举(Enum)相关推荐

  1. c语言enum能自定义吗,18、C语言 —— 枚举enum

    1.枚举的概念 枚举是C语言的一种构造数据类型.它用于声明一组命名的常数.当一个变量有几个固定的取值时,可以将这个变量定义为枚举类型.比如季节(春天,夏天,秋天,冬天)就可以定义为枚举类型. 2.枚举 ...

  2. 枚举enum与#define 宏的区别?

    枚举enum与#define 宏的区别? 1)#define 宏常量是在预编译阶段进行简单替换.枚举常量则是在编译的时候确定其值. 2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量. 3)枚举 ...

  3. java 枚举 下拉框_枚举enum在velocity模板语言中的应用-下拉菜单

    1. velocity模板vm页面 语言: #if("add" == $flag) #foreach($elem in $languageEnum) $elem.name #end ...

  4. Swift之深入解析枚举enum的底层原理

    一.Swift 枚举 枚举简单的说也是一种数据类型,只不过是这种数据类型只包含自定义的特定数据,它是一组有共同特性的数据的集合. Swift 的枚举类似于 Objective C 和 C 的结构,枚举 ...

  5. protobuf入门教程(五):枚举(enum)、包(package)

    枚举(enum) 消息格式 当需要定义一个消息类型的时候,可能想为一个字段指定某"预定义值序列"中的一个值,这时候可以通过枚举实现. syntax = "proto3&q ...

  6. 用枚举enum实现单例

    [README] 1,effectivejava 讲到使用 枚举类实现单例的例子,非常好用: 2,好处如下: 不用定义私有构造器: 不用定义获取单例的方法,如 getInstance() :通过 枚举 ...

  7. Java、Mysql、MyBatis 中枚举 enum 的使用

    From: https://yulaiz.com/java-mysql-enum/ Java 和 MySql 中都有枚举的概念,合理的使用枚举,可以让代码阅读和数据库数据查询更加直观.高效.那么我们怎 ...

  8. c++ enum 给定类型_C++11作用域内枚举enum

    在C++11之前的枚举(enum),是没有办法两个枚举(enum)内有相同枚举名的.如果还不知道C++中枚举(enum)是什么,可以看这篇:枚举enum 如:苹果和桔子都有大,中,小.写个代码来说明下 ...

  9. TypeScript 枚举(Enum)

    TypeScript 枚举(Enum) 本节介绍枚举类型的定义及其使用,需要定义一组相同主题的常量数据时,应该立即想到枚举类型.在学习过程中,需要注意枚举类型的正向映射和反向映射,可以通过编译后的 J ...

  10. Java枚举(Enum)类型使用的正确姿势

    关于Java Enum的介绍及原理参见 Java枚举(Enum)类型的基本介绍与原理探求 Enum类型的基本使用 定义一个枚举类的主要作用就是在逻辑代码中对某个变量的值进行比较.同样以季节的枚举类Se ...

最新文章

  1. P1515 旅行(简单搜索)
  2. Java数据结构——解析算术表达式
  3. 零基础python从入门到精通 pdf-PYTHON从入门到精通 PDF 下载
  4. 10款jQuery/CSS3动画应用 超有用
  5. Mini汽车的保养周期
  6. Bandicam_v4.6.5便携特别版 高清视频录制工具
  7. 十进制转换为16进制
  8. android studio table居中代码_html table表格标签内容如何居中显示?表格的align属性的用法介绍...
  9. xpath的基本使用
  10. matlab编程的步骤,如何画matlab程序的流程图?求解答
  11. 元件库导入_最新版字体图标元件库分享,一套绝佳的矢量字体图标元件库
  12. php的弹出窗口,弹出窗口 PHP
  13. python实例编写(7)---测试报告与测试套件(多个py文件,1个py文件内多个用例)
  14. window10官方工具在线升级失败,终极解决方案
  15. IOS逆向分析—终极详细(一)
  16. GPIB编程控件指令
  17. 最长公共子序列问题-----题目
  18. 一起来吐槽:来自暗网的公链项目VAS,竟然内含十级分销?
  19. 花2个月面过华为测开岗,拿个30K不过分吧?
  20. 【数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践

热门文章

  1. MYSQL,Oracle,SQL数据库在JSP中的驱动
  2. Linux中写入ISO镜像
  3. java中List、Map、Set、Collection、Stack、Queue等的使用
  4. jquery this 与javascript的this
  5. python dict.fromkeys()研究
  6. android项目中values中几个文件的作用
  7. shared_ptrT make_shared( Args ... args );
  8. C++遍历树-非递归递归-使用了标记位
  9. 如何使用Amazon Echo控制您的Eero Wi-Fi网络
  10. dock怎么自定义_如何自定义和调整Mac的Dock