`

枚举

 
阅读更多

枚举是用户定义的整数类型。在声明一个枚举时,要指定该枚举可以包含的一组可接受的实例值。不仅如此,还可以给值指定易于记忆的名称。如果在代码的某个地方,要试图把一个不在可接受范围内的值赋予枚举的一个实例,编译器就会报告一个错误。这个概念对于VB程序员来说是新的。C++支持枚举,但C#枚举要比C++枚举强大得多。

从长远来看,创建枚举可以节省大量的时间,减少许多麻烦。使用枚举比使用无格式的整数至少有如下三个优势:

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

枚举使代码更清晰,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。

枚举使代码更易于键入。在给枚举类型的实例赋值时,VS .NET IDE会通过IntelliSense弹出一个包含可接受值的列表框,减少了按键次数,并能够让我们回忆起可选的值。

定义如下的枚举:

public enum TimeOfDay

{

Morning = 0,

Afternoon = 1,

Evening = 2

}

在本例中,在枚举中使用一个整数值,来表示一天的每个阶段。现在可以把这些值作为枚举的成员来访问。例如,TimeOfDay.Morning返回数字0。使用这个枚举一般是把合适的值传送给方法,在switch语句中迭代可能的值。

class EnumExample

{

public static int Main()

{

WriteGreeting(TimeOfDay.Morning);

return 0;

}

static void WriteGreeting(TimeOfDay timeOfDay)

{

switch(timeOfDay)

{

case TimeOfDay.Morning:

Console.WriteLine("Good morning!");

break;

case TimeOfDay.Afternoon:

Console.WriteLine("Good afternoon!");

break;

case TimeOfDay.Evening:

Console.WriteLine("Good evening!");

break;

default:

Console.WriteLine("Hello!");

break;

}

}

}

C#中,枚举的真正强大之处是它们在后台会实例化为派生于基类System.Enum的结构。这表示可以对它们调用方法,执行有用的任务。注意因为.NET Framework的执行方式,在语法上把枚举当做结构是不会有性能损失的。实际上,一旦代码编译好,枚举就成为基本类型,与intfloat类似。

可以获取枚举的字符串表示,例如使用前面的TimeOfDay枚举:

TimeOfDay time = TimeOfDay.Afternoon;

Console.WriteLine(time.ToString());

会返回字符串Afternoon

另外,还可以从字符串中获取枚举值:

TimeOfDay time2 = (TimeOfDay) Enum.Parse(typeof(TimeOfDay), "afternoon", true);

Console.WriteLine((int)time2);

这段代码说明了如何从字符串获取枚举值,并转换为整数。要从字符串中转换,需要使用静态的Enum.Parse()方法,这个方法带3个参数,第一个参数是要使用的枚举类型。其句法是关键字typeof后跟放在括号中的枚举类名。typeof运算符将在第5章详细论述。第二个参数是要转换的字符串,第三个参数是一个bool,指定在进行转换时是否忽略大小写。最后,注意Enum.Parse()方法实际上返回一个对象引用—— 我们需要把这个字符串显式转换为需要的枚举类型(这是一个拆箱操作的例子)。对于上面的代码,将返回1,作为一个对象,对应于TimeOfDay. Afternoon的枚举值。在显式转换为int时,会再次生成1

System.Enum上的其他方法可以返回枚举定义中的值的个数、列出值的名称等。详细信息参见MSDN文档。

分享到:
评论

相关推荐

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义...

    java枚举实例代码

    Java枚举(enum)是Java语言中的一种特殊数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中被引入,目的是为了更好地管理和使用常量,提高代码的可读性和安全性。在本实例代码中,...

    spring boot 枚举使用的坑整理

    Spring Boot 枚举使用的坑整理 Spring Boot 枚举使用的坑整理是指在使用 Spring Boot 枚举时可能出现的一些问题和解决方法的总结。枚举类型是一种特殊的数据类型,它具有固定的值,且这些值不会被修改。在 Java 中...

    Java中怎样由枚举常量的ordinal值获得枚举常量对象

    Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方  enum Season {  SPRING, SUMMER, AUTUMN, WINTER  }  定义了一个季节枚举类型。  在本例中,对于Season.SPRING这个...

    delphi枚举字符串转换

    在Delphi编程中,枚举(Enumeration)是一种强大的工具,用于定义一组相关的命名常量。枚举类型在处理固定集合的值时非常有用,而字符串转换则是编程中常见的操作,特别是在处理用户输入或数据交互时。当我们需要将...

    USB枚举详细过程剖析

    从驱动开发网看到一篇《USB枚举详细过程分析》,依据自己的理解和经验对原文稍加改动。本文仅供参考,一些顺序并不是固定的。  本文描述的是Windows系统的USB枚举过程,但对嵌入式系统自行开发的USB主机驱动程序也...

    枚举 USB HUB 设备

    在IT领域,枚举USB HUB设备是一项基础但至关重要的任务,它涉及到计算机硬件与操作系统之间的交互。USB(Universal Serial Bus)是一种通用串行总线标准,用于连接计算机系统和各种外设,如键盘、鼠标、打印机、扫描...

    mybatis入门实战之枚举类型

    本文将深入探讨在MyBatis中如何使用枚举类型,并通过实际的项目"mybatis入门实战之枚举类型"进行讲解。这个项目提供了一个简单的demo,非常适合初学者了解并实践MyBatis的TypeHandler机制。 首先,我们要明白枚举...

    java枚举类型说明

    ### Java枚举类型详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种重要的数据类型,在程序设计中扮演着不可或缺的角色。本文将深入探讨Java枚举类型的特性和用法,并通过具体实例说明其优势所在。枚举...

    USB枚举实例讲解\实例讲解USB的枚举(配置)过程

    ### USB枚举过程详解 #### 一、USB枚举概念 USB(Universal Serial Bus)即通用串行总线,是一种广泛应用于计算机领域的接口技术。USB设备连接到主机时,需要经历一个初始化和配置的过程,这一过程称为USB枚举。...

    windows下枚举串口的方法,超好用,跟设备管理器枚举一样

    在Windows操作系统中,尤其是Win7和Win10环境下,对串口进行枚举是一项常见的任务,这主要用于系统管理和设备调试。本文将详细讲解如何通过两种方法实现这一功能:注册表查询和SetupAPI。 首先,我们来看注册表枚举...

    C# 颜色枚举对照表

    1. **颜色枚举**:`Color` 枚举是 C# 中的一个枚举类型,它包含了大量预定义的颜色,如 `Red`, `Green`, `Blue` 等。这些颜色名称对应于特定的 ARGB(Alpha, Red, Green, Blue)值,每个颜色都可以通过其名称或对应...

    C#获取枚举Eumn的属性值,并绑定到控件

    在C#编程中,枚举(Eumn,可能是“Enum”的拼写错误)是一种强大的工具,用于定义一组相关的常量。枚举类型的每个值都关联一个名称,这使得代码更易读、更具可维护性。在某些场景下,我们需要获取枚举的属性值,比如...

    Matlab实现最基本的枚举和算法检查报告.zip_Matlab 枚举法_matlab 枚举_matlab 枚举量_matlab

    在MATLAB中,枚举(enumeration)是一种用于创建固定集合的整数常量的机制,通常用于替代硬编码的整数值,使代码更具可读性和可维护性。枚举在MATLAB中并不是一个内置的数据类型,但可以通过自定义结构体或者元胞...

    Java中的“枚举类型

    ### Java中的“枚举类型”知识点详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种特殊的类,其设计初衷是为了更好地处理一组固定不变的常量集合。相较于传统的使用`static final`字段来表示常量的做法...

    给枚举值增加扩展数据

    在编程中,枚举(Enum)是一种特殊的数据类型,用于定义一组预定义的常量,这些常量通常代表特定的值或状态。在C#等编程语言中,枚举可以帮助我们编写更清晰、更具可读性的代码。然而,标准枚举仅支持基本数据类型...

    代码 基于0-1整数规划隐枚举法离散型优化问题代码

    代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数...

    通过枚举反向给实体类赋值

    在Java编程中,枚举类型(Enum)是一种强大的工具,用于定义一组固定的常量。它在许多场景下比使用字符串或整数常量更安全、更易于管理。然而,在实际开发中,我们经常需要将枚举值反向映射到实体类的属性上,以便在...

    springboot项目中枚举类型的最佳实践

    在Spring Boot项目中,枚举类型(Enums)的使用是一种常见的数据表示方式,它们提供了类型安全和可维护性。本文将深入探讨如何在Spring Boot应用中实现枚举类型的最佳实践,包括前端与后端交互、数据库操作以及序列...

    C++ SerialEnum 串口枚举实例

    `SerialEnum`在C++中通常指的是一个用于枚举计算机上可用串口的程序或类。在这个实例中,我们将深入探讨如何使用C++实现串口枚举功能,并了解相关的关键知识点。 首先,我们需要理解串口的基础知识。串行接口,简称...

Global site tag (gtag.js) - Google Analytics