C#中的枚举类型

枚举类型提供了一种有效的方式来定义可能分配给变量的一组已命名整数常量。
例如,假设你需要定义一个变量,其值表示交通指示灯。 若要定义这些值,可以使用枚举类型,该类型是使用 enum 关键字声明的。
enum EnumLight { Red, Yellow, Green }

  1. 每个枚举类型都有一个基础类型,该基础类型可以是除 char 外的任何整型类型。 枚举元素的默认基础类型是 int。 枚举的已批准类型有 byte、sbyte、short、ushort、int、uint、long 或 ulong。若要声明另一整型类型的枚举(如 byte),则请在后跟该类型的标识符后使用冒号.
    enum EnumLight : byte { Red, Yellow, Green }

  2. 在此枚举中,默认元素的序列从 1 开始,而不是 0。 但建议包括一个值为 0 的常量。用于指示一个初始的无效的枚举值。
    如:
    enum EnumLight : byte {None=0, Red, Yellow, Green }

  3. 枚举类型的基本数据类型,表示其内存中的存储方式。但将 enum 类型转换为整型,则必须使用显示转换。 例如,以下语句通过使用转换将 enum 转换为 int,从而将枚举器 Sun 赋值为 int 类型的变量。
    int n = (int)EnumLight.Red;

  4. 可以将任意整数值分配给int类型的变量, 例如,代码行 EnumLight light = (EnumLight) 10不会产生错误。
    但后面的代码使用该值可能导致错误。

作为位标志的枚举类型

在C#中可以使用枚举类型来定义位标志,这使枚举类型的实例能够存储枚举器列表中定义的值的任何组合。

创建位标志枚举的方法是,应用System.FlagsAttribute属性并适当定义一些值,以便可以对这些值执行 AND、OR、NOT 和 XOR 按位运算。 在位标志枚举中,包括一个值为零(表示“未设置任何标志”)的命名常量。 如果零值不表示“未设置任何标志”,请勿为标志指定零值。

MS的示例:

[Flags]
enum Days
{None = 0x00,Sunday = 0x01,Monday = 0x02,Tuesday = 0x04,Wednesday = 0x08,Thursday = 0x10,Friday = 0x20,Saturday = 0x40
}
class TestClass
{Days meetingDays = Days.Tuesday | Days.Thursday;
}

使用 System.Enum 方法来发现和操作枚举值

所有枚举都是System.Enum类型的实例。 不能从System.Enum中派生新类,但可以使用它的方法来发现有关枚举实例中操作值的信息。

string s = Enum.GetName(typeof(Days), 4);
Console.WriteLine(s);Console.WriteLine("The values of the Days Enum are:");
foreach (int i in Enum.GetValues(typeof(Days)))Console.WriteLine(i);Console.WriteLine("The names of the Days Enum are:");
foreach (string str in Enum.GetNames(typeof(Days)))Console.WriteLine(str);

Enum in C#相关推荐

  1. C++ 笔记(07)— 常量(字面常量、const定义常量、constexpr 定义常量、enum 定义常量、define 定义常量)

    在 C++ 中,常量类似于变量,只是不能修改.与变量一样,常量也占用内存空间,并使用名称标识为其预留的空间的地址,但不能覆盖该空间的内容. 常量可以是任何的基本数据类型,可分为整型数字.浮点数字.字符 ...

  2. 《挑战30天C++入门极限》新手入门:C/C++中枚举类型(enum)

        新手入门:C/C++中枚举类型(enum) 如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来. ...

  3. [C#] enum 枚举

    默认情况下,枚举第一个值是0, 可显式为枚举赋值. 可以定义枚举的基础类型,如enum E : short {}, sizeof(E) == 2:默认情况下是int. 枚举的继承链:ValueType ...

  4. C# Idioms: Enum还是Enum Class(枚举类)

    原文排版格式:http://www.marshine.com) reversion:2004/5/28 修改说明:感谢Ninputer提到的CLS兼容问题,同时修改了原来版本没有提及的Equals改写 ...

  5. C++11中enum class的使用

    枚举类型(enumeration)使我们可以将一组整型常量组织在一起.和类一样,每个枚举类型定义了一种新的类型.枚举属于字面值常量类型. C++包含两种枚举:限定作用域的和不限定作用域的.这里主要介绍 ...

  6. 【C++】C++11的enum class enum struct和enum

    1.问题描述 在走读QtCreator中看到一段代码 在QtCreator-v4.9.2源码中 src\plugins\projectexplorer\projectnodes.h enum clas ...

  7. 【Qt】enum和QString的相互

    使用Q_ENUM注册enum Q_ENUM使用元对象系统meta-object来注册,因此在enum所在的类中必须包含宏Q_OBJECT或者Q_GADGET. 例子如下 class MyClass : ...

  8. enum java 原理_Java 枚举实现原理

    枚举 反编译 示意枚举类如下: package com.jiankunking.test; public enum ApplicationInterfaceTypeEnum { dubbo(" ...

  9. 小鱼提问1 类中嵌套public修饰的枚举,外部访问的时候却只能Class.Enum这样访问,这是为何?...

    /// <summary>/// 常量等定义/// </summary>public class General{/// <summary>/// 文件类型/// ...

  10. java enum变量_java enum

    枚举类 (enum) 在某些情况下,一个类的对象时有限且固定的,如季节类,它只有春夏秋冬4个对象这种实例有限且固定的类,在 Java 中被称为枚举类: 在 Java 中使用 enum 关键字来定义枚举 ...

最新文章

  1. 近期活动盘点:大咖云集,中国AI创新者论坛(3.21)
  2. AndroidStudio中安装GsonFormat插件并根据json文件生成JavaBean
  3. as3中使用字符串调用函数。
  4. mkdir 函数_PHP mkdir()函数与示例
  5. mysql表级锁和行级锁_MySQL表级锁和行级锁
  6. php10天速成培训,十天学会php之第九天
  7. 正则表达式:模式修饰符(自用)
  8. linux抓包及分析
  9. web开发中常用的几种统计图使用
  10. 对摄影术语(及其在光线追踪的应用)的简要概括
  11. VBA实现为Excel中自定义名称的单元格添加批注
  12. 微信小程序仿抖音,微视上下滑动整屏切换视频带关注,收藏
  13. Shell脚本之免交互
  14. 国标GB28181安防摄像头如何通过视频流媒体服务器建设阳光考场?
  15. 计算机中,为什么一个字节是8位?
  16. Centos 基本命令
  17. oracle如何导出表结构及数据,PLSQL怎样导出oracle表结构和数据
  18. C++ Primer Plus (第六版)编程练习记录(chapter14 C++中的代码重用)
  19. 如何设置windows防火墙的出入规则
  20. [USF-XSim-62] 'elaborate' step failed with error(s).使用vivado进行verilog实验,无法进行仿真,如何解决?

热门文章

  1. 别给小偷可乘之机!日本山形县警方呼吁民众“锁门”
  2. windows安装mongodb(快速简易版)
  3. linux中临时、永久修改ip
  4. 微信公众号之微信买单
  5. c# 读取机器CPU信息,硬盘信息,网卡信息
  6. 手机百度首页的localStorage的使用实例
  7. linux 多域名绑定
  8. python输入input数组_Python学习——实现简单的交互raw_input的使用
  9. python与云计算的关系_python map reduce与云计算map/reduce之间的关系?
  10. laravel中的数据迁移表结构、字段类型、定义整理