首页 新闻 会员 周边 捐助

关于枚举类型值的一个问题

0
悬赏园豆:5 [已解决问题] 解决于 2013-10-29 23:15

    如何使用枚举类型如何将下面两句话写入值:每句话是个整体

        成功了,真棒

        失败了,继续努力

      而我这样写

     public enum Show

     {

            成功了,真棒,

            失败了,继续努力
      }

    不对。能不能求个解决方案,谢谢

 

 

 

 

 

   

太阳风~Endless的主页 太阳风~Endless | 初学一级 | 园豆:8
提问于:2013-10-16 17:55
< >
分享
最佳答案
1
 public enum Result
    {
        [Description("成功了,真棒")]
        Success = 0,
        [Description("失败了,继续努力")]
        Failure = 1
    }

    /// <summary>
    /// 枚举实体
    /// </summary>
    public class EnumViewModel
    {
        /// <summary>
        /// 枚举数值
        /// </summary>
        public int Value { get; set; }

        /// <summary>
        /// 枚举中文值
        /// </summary>
        public string Description { get; set; }
    }

/// <summary>
        /// 获取枚举列表
        /// </summary>
        /// <param name="enumType">枚举类型</param>
        /// <returns>枚举列表</returns>
        public List<EnumViewModel> GetEnumList(Type enumType)
        {

            var enumList = new List<EnumViewModel>();
            var array = Enum.GetValues(enumType);
            foreach (var item in array)
            {
                var fieldInfo = item.GetType().GetField(item.ToString());
                var attribArray = fieldInfo.GetCustomAttributes(false);
                var ticketControlType = new EnumViewModel
                {
                    Description = ((DescriptionAttribute)attribArray[0]).Description,
                    Value = (int)item
                };
                enumList.Add(ticketControlType);
            }
            return enumList;
        }
调用
 var list = GetEnumList(typeof(Result));
            foreach (var enumViewModel in list)
            {
                var value = enumViewModel.Value;
                var description = enumViewModel.Description;
            }
收获园豆:2
rize | 菜鸟二级 |园豆:217 | 2013-10-25 17:15
其他回答(4)
1

首先说枚举是为了使程序容易编写、阅读和维护,你这样写不太好吧!

public enum Show { 
     Ok=1,    //1、可以指定值 如果不指定第一个生成后是0 后面的依次1、2、3等
  
     Error=2  //2、如果ok=1,error=2,common=4 后面的值8、16 就是标志枚举
    }
        //这个例子貌似不恰当 意思明白 就好了
        int val = 1; //假如前台传递到的一个参数 
        string reslutStr = string.Empty;
            if (resultEnum==(int)Model.Enum.Show.Ok) {
                reslutStr = "成功了,真棒";
            }
            else {
                reslutStr = "失败了,继续努力";
            }
            Response.Write(reslutStr);
            Response.End();
收获园豆:1
秋壶冰月 | 园豆:5903 (大侠五级) | 2013-10-16 19:20

明白了,我这种写法确实不太好,谢谢!

支持(0) 反对(0) 太阳风~Endless | 园豆:8 (初学一级) | 2013-10-16 20:18
1
 1 class Program {
 2         static void Main(string[] args){
 3             var dic = new Dictionary<int, string>();
 4             dic.Add(1,"答对了");
 5             dic.Add(0,"答错了");
 6 
 7             int value = 1;
 8             Console.WriteLine(dic[value]);
 9         }
10     }

你的需求考虑字典实现,枚举并不合适。

收获园豆:1
孤狼晖 | 园豆:289 (菜鸟二级) | 2013-10-17 07:33
1

也可以这样用的:

     public enum Show

     {

    [Description("成功了,真棒")]

            成功

    [Description("失败了,继续努力")]

            失败
      }

 

然后再写一个方法获取枚举的Description.

收获园豆:1
平常心队长 | 园豆:1113 (小虾三级) | 2013-10-17 08:53
1

楼上正解

幕三少 | 园豆:1384 (小虾三级) | 2013-10-17 12:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册