1、基础
2、例子与IL分析
public enum Color{ White, Red, Green, Blue, Orange }
通过IL代码可知,对于Blue,Green等其内部实现是常量int32的类型,该枚举类型继承与System.Enum类。C#编译器将枚举类型视为基元类型,所以可以用许多操作符(==,!=,<,>,<=,>=,+,-,^,&,|,~,++和--来操作没绝类型的实例,这些操作符实际上作用于每个枚举类型实例内部的value__实例字段。
图1-1 图1-2
3、对于System.Enum下的常用静态方法
编号 | 名称 | 说明 |
---|---|---|
1 | GetName | 在指定枚举中检索具有指定值的常数的名称。 |
2 | GetNames | 检索指定枚举中常数名称的数组。 |
3 | GetUnderlyingType | 返回指定枚举的基础类型。 |
4 | GetValues | 检索指定枚举中常数值的数组。 |
5 | IsDefined | 返回指定枚举中是否存在具有指定值的常数的指示。 |
6 | Parse(Type, String) | 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 |
7 | Parse(Type, String, Boolean) | 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 一个参数指定该操作是否不区分大小写。 |
8 | TryParse<TEnum>(String, TEnum) | 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 用于指示转换是否成功的返回值。 |
9 | TryParse<TEnum>(String, Boolean, TEnum) | 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 一个参数指定该操作是否区分大小写。 用于指示转换是否成功的返回值。 |
4、位标志(FlagsAttribute特性)
using System; public class temp { public static void Main(){ var color=Color.Green | Color.Red; Console.WriteLine(color); } } [Flags] public enum Color{ White=1, Red=2, Green=4, Blue=8, Orange=16 }
【CLR Via C#】15 枚举类型与位类型,布布扣,bubuko.com
原文:http://www.cnblogs.com/luge/p/ClR_Via_CSharp_FlagEnum.html