什么是枚举?
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。
定义枚举:
public enum Direction { [Description("东")] East, [Description("南")] South, [Description("西")] West, [Description("北")] North }
默认枚举的int值从零开始,枚举的下一项int值会自动累加上一个枚举项的值。例如:East = 1,则South=2, West=3,以此类推。。。 或East = 4,则South=5, West=7,North=8。。。
获取枚举的int值:
var eastNumber = (int)Direction.East; // eastNumber = 0;
获取枚举字符串:
var eastString = Direction.East.ToString(); // eastString= "East";
int转枚举:
var east = (Direction)0; // east = Direction.East
string转枚举:
const string strEnum = "East"; // ignoreCase: true/false (是否忽略大小写。true:忽略大小写(默认), false: 不忽略) var east = Enum.Parse(typeof(Direction), strEnum, ignoreCase: true); // east = Direction.East;
获取枚举的描述(Description):
/// <summary> /// 获取枚举描述的方法 /// </summary> /// <param name="enumValue"></param> /// <returns></returns> public static string GetEnumDescription(Enum enumValue) { string value = enumValue.ToString(); FieldInfo field = enumValue.GetType().GetField(value); object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false); //获取描述属性 if (objs.Length == 0) //当描述属性没有时,直接返回名称 return value; DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0]; return descriptionAttribute.Description; }
// 调用获取枚举描述的方法 var description = GetEnumDescription(Direction.East); // description = "东";
枚举的循环:
foreach (Direction item in Enum.GetValues(typeof(Direction))) { // item is East/South/West/North }