C#枚举Enum[轉]

枚举是一个指定的常数,其基础类型可以是除 Char 外的任何整型。

如果没有显式声明基础类型,则使用 Int32。

编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举。

定义默认基数从O开始,也可指定数值。

範例一:

enum Days { Saturday=1, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday };
enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 };

Colors myColors = Colors.Red;
string strColor=myColors.tostring();
int    IntColor=(int)myColors ; 
//位或
Colors myColors = Colors.Red | Colors.Blue | Colors.Yellow;
//位与
Colors myColors = Colors.Red & Colors.Blue & Colors.Yellow;
//遍历 
foreach (string s in Enum.GetNames(typeof(Days)))
  Response.Write(s + "--" + Enum.Parse(typeof(Days), s).ToString());
//转换
Colors mc=Colors Enum.Parse(typeof(Colors ), "red"); 
 if (System.Enum.IsDefined(typeof(Days), "Monday"))
   Days ds= (Days)Enum.Parse(typeof(Days), "Monday");

範例二:

public enum NoticeType
{
        Notice = 'A',
        LabRule = 'H',
        HotInformation = 'N',
        Column = 'C',
        All = '1',
        Null = '0'
}
//新建枚举类型
NoticeType noticeType1 = NoticeType.Column;

//把枚举类型转换为string d="Column"
string d = noticeType1.ToString();

//取得枚举类型的基数 dd='C'
char dd = (char)noticeType1;

//通过基数取得对应的枚举类型 noticeType2 = NoticeType.Notice
//(NoticeType)'A';  两种方式都可以
NoticeType noticeType2 = (NoticeType)Char.Parse("A"); 

//通过名称取得枚举类型 noticeType3 = NoticeType.Notice
NoticeType noticeType3 = (NoticeType)Enum.Parse(typeof(NoticeType), "Notice");

获得文字描述:

using System.ComponentModel; // 先添加该引用
enum Direction
{
    [Description("this means facing to UP (Negtive Y)")]
    UP = 1,
    [Description("this means facing to RIGHT (Positive X)")]
    RIGHT = 2,
    [Description("this means facing to DOWN (Positive Y)")]
    DOWN = 3,
    [Description("this means facing to LEFT (Negtive X)")]
    LEFT = 4
};

//使用如下方法来获得文字描述:
using System.Reflection;
using System.ComponentModel;
public static String GetEnumDesc(Direction e)
{
    FieldInfo EnumInfo = e.GetType().GetField(e.ToString());
    DescriptionAttribute[] EnumAttributes = (DescriptionAttribute[]) EnumInfo.
        GetCustomAttributes (typeof(DescriptionAttribute), false);
    if (EnumAttributes.Length > 0)
    {
        return EnumAttributes[0].Description;
    }
    return e.ToString();
}