了解C#/.NET中的枚举--什么是枚举?为什么使用枚举?

C#开发 作者: Rector 3810 次阅读 · 读完约需 4 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

枚举:为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。

例如,假设您必须定义一个变量,该变量的值表示一周中的一天。该变量只能存储七个有意义的值。若要定义这些值,可以使用枚举。

枚举是使用 enum 关键字声明的。我们以定义性别作为枚举例子,如下:

以上就是声明一个枚举的例子,非常的简单是不?

但有几点需要特别注意的:
1.请使用enum关键字来声明一个枚举。枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符。
枚举本身的修饰符仅能使用public和internal;

2.枚举类型的枚举成员均为静态,且默认为Int32类型,上例中使用到了赋值。

3.枚举是值类型,隐式继承自System.Enum,不能手动修改。System.Enum本身是引用类型,继承自System.ValueType。

4.枚举都是隐式密封的,不允许作为基类派生子类。

5.每个枚举成员均具有相关联的常数值。此值的类型就是枚举的底层数据类型。每个枚举成员的常数值必须在该枚举的底层数据类型的范围之内。如果没有明确指定底层数据类型则默认的数据类型是int类型。

6.枚举成员不能相同,但枚举的值可以相同。

7.枚举最后一个成员的逗号和大括号后面的分号可以省略枚举使用的实例,代码如下:

输出结果:Male

在了解了什么是枚举之后,我们再来分析为什么在C#中使用枚举?

1.枚举类型的键在Visual Studio中是可以智能提示的,如图:

enum-1

2.枚举能够使代码更加清晰,更易维护

使用ToString()获取枚举的键,代码如下:

使用强类型转换获取枚举的值,代码如下:

注意:枚举类型默认的是Int类型,枚举中第一个键的默认对应值(如果在未指定值的情况下)为:0

我们也可以指定枚举的值,如:

那么,我们再获取本例中枚举数值的时候,得到的就不是1,而是2了:

同时,我们也可以指定枚举的数据类型,如:

我们再查看Gender枚举此时的基础类型:

关于枚举的键值相互获取的问题,请参见文章《NET(C#)枚举的使用总结–获取键/值及键/值列表等》枚举在switch语句中同样有可用:

输出:Male

枚举类型作为位标志可以使用枚举类型定义位标志,从而使该枚举类型的实例可以存储枚举数列表中定义的值的任意组合。

(当然,某些组合在您的程序代码中可能没有意义或不允许使用。)创建位标志枚举的方法是应用 System.FlagsAttribute 属性并适当定义一些值,以便可以对这些值执行 AND、OR、NOT 和 XOR 按位运算。

在位标志枚举中包含一个值为零(表示“未设置任何标志”)的命名常量。如果零值不表示“未设置任何标志”,则请不要为标志指定零值。

在下面的示例中,定义了 Days 枚举的另一个版本,即 Days2。Days2 具有 Flags 属性,且它的每个值都是 2 的若干次幂,指数依次递增。这样您就可以创建值为 Days2.Tuesday 和 Days2.Thursday 的 Days2 变量。

若要在某个枚举上设置标志,请使用逻辑 OR 运算符,如下面的示例所示:

若要确定是否设置了特定标志,请使用逻辑 AND 运算,如下面的示例所示:

阅读了该文章的人还浏览了...

本文永久链接码友网 » 了解C#/.NET中的枚举--什么是枚举?为什么使用枚举?

发布于: 2015-08-27 12:00:00
分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册