c# 枚举

命名空间:   System
程序集:  mscorlib(mscorlib.dll 中)

定义一个枚举类型

public enum Week
{
    [Description("星期一")] //枚举描述
    Monday=1,              //设置枚举的成员常量值
    [Description("星期二")]
    Tuesday=2,
    [Description("星期三")]
    Wednesday =3,
    [Description("星期四")]
    Thursday=4,
    [Description("星期五")]
    Friday=5,
    [Description("星期六")]
    Saturday=6,
    [Description("星期七")]
    Sunday=7
}
备注:
1.成员的值可以一样的,但是成员不行
例如:你可以设置
public enum Week{Monday=1,Tuseday=1}
但是你不可以出现有两个成员是一样的,例如:public enum Week{Monday=1,Monday=2,Tuseday=3}

2. Console.WriteLine((int)EnumDemo.Week.Friday);//输出 5

3. string[] array1 = Enum.GetNames(typeof(EnumDemo.Week));
Console.WriteLine(array1[1]); //输出Tuesday

Enum.GetNames 方法 (Type) ,检索指定枚举中常数名称的数组。
参数enumTypeType: System.Type枚举类型。
返回值Type: System.String[]enumType 的常数名称的字符串数组

       

4. Array array2 = Enum.GetValues(typeof(EnumDemo.Week));
Console.WriteLine(array2.GetValue(1)); //输出:Tuesday

Enum.GetValues 方法(Type)
参数enumTypeType: System.Type
返回值Type: System.Array

       

4. Type t = Enum.GetUnderlyingType(typeof(EnumDemo.Week));     
Console.WriteLine(t); //输出 System.Int32

Enum.GetUnderlyingType 方法 (Type)
参数enumType,基础类型将被检索的枚举。
返回值Type: System.Type enumType 的基础类型

      

6. //由值获取内容
int i = 1;
string Name = Enum.Parse(typeof(EnumDemo.Week), i.ToString()).ToString();
Console.WriteLine(Name);//输出:Monday

7. //由内容获得值
string Name2 = "Monday";
int j = Convert.ToInt32(Enum.Parse(typeof(EnumDemo.Week), Name2));
Console.WriteLine(j);//输出:1
8.
Dictionary<string, int> Sexlist = new Dictionary<string, int>();
string[] keys = Enum.GetNames(typeof(EnumDemo.Week));
Array values = Enum.GetValues(typeof(EnumDemo.Week));
for (int i = 0; i < keys.Length; i++)
{
Sexlist.Add(keys[i], (int)values.GetValue(i));
}

9.

   /// <summary>
   /// 获取描述信息
   /// </summary>
   /// <param name="en"></param>
   /// <returns></returns>
   public static string description( Enum en)
   {
        Type type = en.GetType();
        MemberInfo[] memInfo = type.GetMember(en.ToString());
       if (memInfo != null && memInfo.Length > 0)
       {
          object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
          if (attrs != null && attrs.Length > 0)
          return ((DescriptionAttribute)attrs[0]).Description;
       }
     return en.ToString();
   }

  Console.WriteLine(description(EnumDemo.Week.Friday));//输出:星期五












原文地址:https://www.cnblogs.com/huangenai/p/5714314.html