当前位置: 代码迷 >> 综合 >> C#:Enum 与 值和名称之间的转换
  详细解决方案

C#:Enum 与 值和名称之间的转换

热度:45   发布时间:2023-12-14 12:57:30.0

1.先定义一个枚举

public enum EnumAll{[Description("我是第一个")]One = 1,[DisplayName("我是第二个")]Two = 2,[DisplayName("我是第三个")]Three = 3}

2.

EnumAll e = EnumAll.Three;  //枚举String estring = "Three";   //枚举的名称int evalue = 3;             //枚举的值//得到枚举的 名称(不是值)     两种方法String enumName_one = e.ToString();String enumName_two = Enum.GetName(typeof(EnumAll), e);String s1 = $@"得到枚举的名称:第一种:{enumName_one}第二种:{enumName_two}";//得到枚举的 值 (不是名称) int enumValue_one = (int)e;int enumValue_two = e.GetHashCode();int enumValue_three = Convert.ToInt32(e);String s2 = $@"得到枚举的值:第一种:{enumValue_one}第二种:{enumValue_two}第三种:{enumValue_three}";//通过反射得到枚举的描述 DisCribtion   只举一个例子String d = "";string value = e.ToString();MemberInfo[] field = e.GetType().GetMember(value);if (field != null && field.Length > 0){object[] attrs = field[0].GetCustomAttributes(typeof(DescriptionAttribute), true);if (attrs != null && attrs.Length > 0){d = ((DescriptionAttribute)attrs[0]).Description;}}String s3 = $@"该枚举的描述是:{d}";//由 名称(不是值) 转为 枚举EnumAll e_Name = (EnumAll)Enum.Parse(typeof(EnumAll), estring);//由 值 转为 枚举             两种方法EnumAll e_Value_one = (EnumAll)evalue;EnumAll e_Value = (EnumAll)Enum.ToObject(typeof(EnumAll), evalue);

 

  相关解决方案