C#中enum简介
来源:互联网 发布:藏头诗在线生成器软件 编辑:程序博客网 时间:2024/04/30 18:35
enum
enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常数组成的独特类型。每种枚举类型都有基础类型,该类型可以是除char 以外的任何整型。枚举元素的默认基础类型为int。默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。例如:
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
在此枚举中,Sat 为 0,Sun 为 1,Mon 为 2,依此类推。枚举数可以具有重写默认值的初始值设定项。例如:
enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};
在此枚举中,强制元素序列从 1 而不是 0 开始。
可以给 Days 类型的变量赋以基础类型范围内的任何值,所赋的值不限于已命名的常数。
enum E 的默认值为表达式 (E)0 产生的值。
枚举数的名称中不能包含空白。
基础类型指定为每个枚举数分配的存储大小。但是,从 enum 类型到整型的转换需要用显式类型转换来完成。例如,下面的语句通过使用强制转换从enum 转换为int,将枚举数Sun 赋给 int 类型的变量:
int x = (int)Days.Sun;
将 System.FlagsAttribute 应用于某个枚举时,如果该枚举包含一些使用按位“或”运算组合的元素,这时您会注意到该属性在用于某些工具时会影响 enum 的行为。当使用诸如 Console 类方法、表达式计算器这样的工具时,可以注意到这些变化。(请参见示例 3)。
如果给新版本的枚举赋其他值,或者更改新版本中枚举成员的值,可能引起相关源代码的问题。情况通常是:switch 语句中使用了enum 值,如果已将其他元素添加到enum 类型中,那么默认值的测试可能意外地返回 true。
如果其他开发人员将使用您的代码,您需要提供相关说明,告诉开发人员将新元素添加到任何 enum 类型时,他们的代码应该如何响应。
在此例中,声明了一个枚举 Days。两个枚举数被显式转换为整数并赋给整型变量。
// keyword_enum.cs// enum initialization:using System;public class EnumTest { enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; static void Main() { int x = (int)Days.Sun; int y = (int)Days.Fri; Console.WriteLine("Sun = {0}", x); Console.WriteLine("Fri = {0}", y); }}
输出
Sun = 2Fri = 7
在此例中,使用了基类选项来声明成员类型是 long 的 enum。注意,即使枚举的基础类型是long,枚举成员仍然必须使用强制转换显式转换为long 类型。
// keyword_enum2.cs// Using long enumeratorsusing System;public class EnumTest { enum Range :long {Max = 2147483648L, Min = 255L}; static void Main() { long x = (long)Range.Max; long y = (long)Range.Min; Console.WriteLine("Max = {0}", x); Console.WriteLine("Min = {0}", y); }}
输出
Max = 2147483648Min = 255
下面的代码示例阐释 enum 声明上的 System.FlagsAttribute 属性的使用和效果。
// enumFlags.cs// Using the FlagsAttribute on enumerations.using System;[Flags]public enum CarOptions{ SunRoof = 0x01, Spoiler = 0x02, FogLights = 0x04, TintedWindows = 0x08,}class FlagTest{ static void Main() { CarOptions options = CarOptions.SunRoof | CarOptions.FogLights; Console.WriteLine(options); Console.WriteLine((int)options); }}
输出
SunRoof, FogLights5
- C#中enum简介
- C#中关于Enum
- C#中Enum用法
- c#中Enum的转换
- C#中enum的总结
- c#中 遍历enum成员
- C#中enum的总结
- C#中Enum用法小结
- C#中enum的总结
- C#中enum的总结 .
- C#中Enum用法小结
- c#中Enum 的遍历
- c#中Enum的转换(downmoon)
- 在C#中枚举的作用(enum)
- C#中对于Enum类型的遍历
- Java中enum和C#中的异同
- c#中Enum和String相互转换
- C#的Enum中Flags的用法
- FxCop in CruiseControl.NET
- 驱动程序中几个常见例程(读书笔记)
- filezilla 配置文件 在哪里?原来配置文件位置修改如此简单,绿色实用的方法
- Git使用
- Android的布景设计(theme)
- C#中enum简介
- 线程同步:Mutex和Condition
- Comparing Struts 1 and 2
- Android源码里packages里面的结构
- Remove Lock
- AboutPID
- oracle实现读取文件,将文件用clob类型存入数据库
- 删除指定目录下的文件
- VFP调用 dll http://www.ooppoo.com/html/26/n-251726.html