C#点点滴滴:枚举enum
2013-10-30 12:36
218 查看
一、enum简介
enum为枚举类型,即一种由一组称为枚举数列表的命名常量组成的独特类型在声明一个枚举时,要指定该枚举可以包含的一组可接受的实例值,还可以给值指定易于记忆的名称
注:如果在代码中试图把一个不在可接受值范围内的值赋予枚举的一个实例,编译器就会报告一个错误
二、enum类型
枚举类型可以是:byte、sbyte、shout、ushort、int、uint、long、ulong,默认值为int类型访问修辞符 enum 枚举名:基础类型
{
枚举成员
} (这里C#不需要加分号)
三、enum的值
声明:public enum TimeOfDay { Morning = 0, Afternoon = 1, Evening = 2, };
如果不为枚举数列表中的元素指定值,则它们的值将以 1 为增量自动递增。在前面的示例中,Days.Morning的值为 0,Days.Afternoon的值为 1,依此类推。
住:允许多个枚举成员有相同的值,允许无顺序地定义成员值,没有显式赋值的成员的值默认为上一个成员的值+1(第一个成员如果没赋值的话默认就是0)。另外,枚举值都不能超过它的基础类型范围。
public enum TimeOfDay { Morning = 0, Afternoon = 2, Evening, // == 3 };
使用:
public string getTimeOfDay(TimeOfDay time) { string result = string.Empty; switch (time) { case TimeOfDay.Morning: result = "上午"; break; case TimeOfDay.Afternoon: result = "下午"; break; case TimeOfDay.Evening: result = "晚上"; break; default: result = "未知"; break; } return result; }
四、enum枚举的常用方法
a. 获取enum枚举字符串TimeOfDay time = TimeOfDay.Afternoon; Console.WriteLine(time.ToString());//输出:Afternoon
b. 获取enum枚举字符串对应的值
TimeOfDay time2 = (TimeOfDay) Enum.Parse(typeof(TimeOfDay), "afternoon", true); Console.WriteLine((int)time2);//输出1
Enum.Parse()这个方法带3个参数,原型如下:
// 参数 // enumType // 枚举的 Type。 // value // 包含要转换的值或名称的字符串。 // ignoreCase // 如果为 true,则忽略大小写;否则考虑大小写。 // 返回值 // enumType 类型的对象,其值由 value 表示。 public static Object Parse ( Type enumType, string value, bool ignoreCase )
最后,注意Enum.Parse()方法实际上返回一个对象引用—— 我们需要把这个字符串显式转换为需要的枚举类型(这是一个取消装箱操作的例子)。对于上面的代码,将返回1,作为一个对象,对应于TimeOfDay.Afternoon的枚举值。在显式转换为int时,会再次生成1。
c. 获取enum某个值对于的字符串
lbOne.Text = Enum.GetName(typeof(TimeOfDay), 0); lbOne.Text = ((TimeOfDay)0).ToString();//返回:Morning
如有有两个字符串的值是一样的,则返回的是第一个匹配值的字符串。
上述两种方法都能实现,但是当其值越界(不是枚举所列出的值),就有一定的区别了。大家可以根据自己的需求不同,选择合适的方法。
lbCon.Text = ((TimeOfDay)5).ToString(); //返回:5,如果越界返回原值 this.lbGetName.Text = Enum.GetName(typeof(TimeOfDay), 5); //返回:空字符串,如果越界返回空字符串
d.得到enum枚举的所有的值
foreach (int i in Enum.GetValues(typeof(TimeOfDay))) { lbValues.Text += i.ToString(); }
d.得到enum枚举的所有值对应的字符串
foreach(string temp in Enum.GetNames(typeof(TimeOfDay))) { lbNames.Text += temp; }
五、 其他
在C#中,枚举的真正强大之处是它们在后台会实例化为派生于基类System.Enum的结构。这表示可以对它们调用方法,执行有用的任务。注意因为.NET Framework的执行方式,在语法上把枚举当做结构是不会有性能损失的。实际上,一旦代码编译好,枚举就成为基本类型,与int和float类似。OK!
每天努力一点点,加油!
------------------------------------------------------------------------------------------
作者:庞辉
出处:http://www.cnblogs.com/pang123hui/
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名庞辉(包含链接).
相关文章推荐
- C# Enum,Int,String的互相转换 枚举转换
- C#将Enum枚举映射到文本字符串
- C# Enum枚举转 Dictionary字典
- c#枚举(Enum)的用法及遍历方法
- C# 枚举 Enum 工具类
- C# Enum,Int,String的互相转换 枚举转换
- Enums and Structs in C#(C#里的枚举和结构) (from codeproject)
- (转)C# Enum,Int,String的互相转换 枚举转换(转)
- enum : C#中的枚举类型,原来有这么多用法(转)
- C#Enum常用枚举操作
- C#梳理【枚举Enum】
- C# 中的 enum(枚举) 类型使用例子
- 【C#基础】枚举(Enum)、结构体(Struct)、委托(Delegate)
- C#的Enum——枚举 (转)
- C# Enum枚举转 Dictionary字典
- C#中的结构体(Struct)和枚举(enum)的区别
- C# 枚举类型转换字符串 Enum to string,枚举转换为下拉菜单 Enum DropDownList
- C#枚举类型enum
- c# enum用法 枚举用法 Asp.net ENUM用法
- C#基础之枚举(enum)