C#中枚举类型enum的使用[转载]
2007-12-07 12:45
253 查看
C#中枚举类型enum的使用
关于enum应用的总结(摘自http://hi.baidu.com/yangzhiping/blog/item/9d841fd5a4309dc451da4baa.html)1、关于enum的定义 enum Fabric { Cotton = 1, Silk = 2, Wool = 4, Rayon = 8, Other = 128 } 2、符号名和常数值的互相转换 Fabric fab = Fabric.Cotton; int fabNum = (int)fab;//转换为常数值。必须使用强制转换。 Fabric fabString = (Fabric)1;//常数值转换成符号名。如果使用ToString(),则是((Fabric)1).ToString(),注意必须有括号。 string fabType = fab.ToString();//显示符号名 string fabVal = fab.ToString ("D");//显示常数值 3、获得所有符号名的方法(具体参见Enum类) public enum MyFamily { YANGZHIPING = 1, GUANGUIQIN = 2, YANGHAORAN = 4, LIWEI = 8, GUANGUIZHI = 16, LISIWEN = 32, LISIHUA = 64, } foreach (string s in Enum.GetNames(typeof(MyFamily))) { Console.WriteLine(s); } 4、将枚举作为位标志来处理 根据下面的两个例子,粗略地说,一方面,设置标志[Flags]或者[FlagsAttribute],则表明要将符号名列举出来;另一方面,可以通过强制转换,将数字转换为符号名。说不准确。看下面的例子体会吧。注意: 例一: Fabric fab = Fabric.Cotton | Fabric.Rayon | Fabric.Silk; Console.WriteLine("MyFabric = {0}", fab);//输出:Fabric.Cotton | Fabric.Rayon | Fabric.Silk; 例二: class FlagsAttributeDemo { // Define an Enum without FlagsAttribute. enum SingleHue : short { Black = 0, Red = 1, Green = 2, Blue = 4 }; // Define an Enum with FlagsAttribute. [FlagsAttribute] enum MultiHue : short { Black = 0, Red = 1, Green = 2, Blue = 4 }; static void Main( ) { Console.WriteLine( "This example of the FlagsAttribute attribute \n" + "generates the following output." ); Console.WriteLine( "\nAll possible combinations of values of an \n" + "Enum without FlagsAttribute:\n" ); // Display all possible combinations of values. for( int val = 0; val <= 8; val++ ) Console.WriteLine( "{0,3} - {1}", val, ( (SingleHue)val ).ToString( ) ); Console.WriteLine( "\nAll possible combinations of values of an \n" + "Enum with FlagsAttribute:\n" ); // Display all possible combinations of values. // Also display an invalid value. for( int val = 0; val <= 8; val++ ) Console.WriteLine ( "{0,3} - {1}", val, ( (MultiHue)val ).ToString( ) ); } } /* This example of the FlagsAttribute attribute generates the following output. All possible combinations of values of an Enum without FlagsAttribute: 0 - Black 1 - Red 2 - Green 3 - 3 4 - Blue 5 - 5 6 - 6 7 - 7 8 - 8 All possible combinations of values of an Enum with FlagsAttribute: 0 - Black 1 - Red 2 - Green 3 - Red, Green 4 - Blue 5 - Red, Blue 6 - Green, Blue 7 - Red, Green, Blue 8 - 8 */ 5、枚举作为函数参数。经常和switch结合起来使用。下面举例 public static double GetPrice(Fabric fab) { switch (fab) { case Fabric.Cotton: return (3.55); case Fabric.Silk: return (5.65); case Fabric.Wool: return (4.05); case Fabric.Rayon: return (3.20); case Fabric.Other: return (2.50); default: return (0.0); } } 6、上面三点一个完整的例子 //1、enum的定义 public enum Fabric : short { Cotton = 1, Silk = 2, Wool = 3, Rayon = 8, Other = 128 } //将枚举作为参数传递 public static double GetPrice(Fabric fab) { switch (fab) { case Fabric.Cotton: return (3.55); case Fabric.Silk : return (5.65); case Fabric.Wool: return (4.05); case Fabric.Rayon: return (3.20); case Fabric.Other: return (2.50); default: return (0.0); } } public static void Main() { Fabric fab = Fabric.Cotton; int fabNum = (int)fab; string fabType = fab.ToString(); string fabVal = fab.ToString ("D"); double cost = GetPrice(fab); Console.WriteLine("fabNum = {0}\nfabType = {1}\nfabVal = {2}\n", fabNum, fabType, fabVal); Console.WriteLine("cost = {0}", cost); } 7、Enum类的使用 Enum.IsDefinde、Enum.Parse两种方法经常一起使用,来确定一个值或符号是否是一个枚举的成员,然后创建一个实例。Enum.GetName打印出一个成员的值;Enum.GetNames打印出所有成员的值。其中注意typeof的使用。这一点很重要。 public enum MyFamily { YANGZHIPING = 1, GUANGUIQIN = 2, YANGHAORAN = 4, LIWEI = 8, GUANGUIZHI = 16, LISIWEN = 32, LISIHUA = 64, } string s = "YANGHAORAN"; if (Enum.IsDefined(typeof(MyFamily), s)) { MyFamily f = (MyFamily)Enum.Parse(typeof(MyFamily), s); GetMyFamily(f); Console.WriteLine("The name is:" + Enum. GetName(typeof(MyFamily), 2)); string[] sa = Enum.GetNames(typeof(MyFamily)); foreach (string ss in sa) { Console.WriteLine(ss); |
相关文章推荐
- 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)
- 枚举类型的使用方法enum
- java枚举类型enum的使用
- Java 枚举类型enum 的使用
- C# Enum设计和使用的相关技巧
- java枚举类型enum的使用 .
- 使用C#自动生成Word2003文档(通过操作COM组件实现)-转载
- java枚举类型enum的使用
- enum 在c中的使用(枚举类型)
- 黄聪:C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(转载)
- C#关于AutoResetEvent的使用介绍[转载]
- 【转载】C# 使用 NPOI 库读写 Excel 文件
- C#中使用网络函数(用户函数)[转载]
- C#中枚举类型的使用总结
- Emun 枚举类型使用浅析——包括enumSet enumMap
- 使用C#和Java发送邮件(转载)
- 【转载】[翻译整理]使用RAPI库操作移动设备——C#语言描述
- C#关于AutoResetEvent的使用介绍[转载]
- C/C++中枚举类型(enum)的使用解惑
- 使用c#捕获windows的关机事件(转载)