使用Enum.Prase及Enum.TryPrase时的注意事项

因为一个程序BUG发现的奇怪问题,以前完全不知道要这样写

创新互联专注于企业全网营销推广、网站重做改版、饶河网站定制设计、自适应品牌网站建设、html5商城网站开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为饶河等各大城市提供网站开发制作服务。

如果说需要验证一个字符串是否符合一个枚举 

可以用 

(枚举类型)Enum.Parse(typeof(枚举类型),"要验证的信息"); 

可以得到 枚举类型 的 实例,如果不在枚举里就会报错

要验证的信息 可以是 文本,也可以是 数字

比如 

  enum 销售类型
    {
        A型 = 1,
        B型 = 2
    }

    class Program
    {
        static void Main(string[] args)
        {
            销售类型 a = (销售类型)Enum.Parse(typeof(销售类型), "A型");
            Console.WriteLine("{0} value is {1}", a.ToString(), (int)a);

            销售类型 b = (销售类型)Enum.Parse(typeof(销售类型), "2");
            Console.WriteLine("{0} value is {1}", b.ToString(), (int)b);

            销售类型 c = (销售类型)Enum.Parse(typeof(销售类型), "3");
            Console.WriteLine("{0} value is {1}", c.ToString(), (int)c);
            
            Console.ReadKey();
        }
    }

你可以把 "A型" 或者 "2" 导入,都没有问题

但是TMD!!!!

如果你导入了 “3”, 这个是不在枚举,但是他不会报错,用 Enum.TryParse 也不会返回false

他会成功转换成 3 给你。。。。。。。。。卧槽 

MSDN是这样解释的

使用Enum.Prase及Enum.TryPrase时的注意事项

所以,上面那段代码正确的写法是

 enum 销售类型
    {
        A型 = 1,
        B型 = 2
    }

    class Program
    {
        static void Main(string[] args)
        {
            销售类型 a = (销售类型)Enum.Parse(typeof(销售类型), "A型");
            Console.WriteLine("{0} value is {1}", a.ToString(), (int)a);

            销售类型 b = (销售类型)Enum.Parse(typeof(销售类型), "2");
            Console.WriteLine("{0} value is {1}", b.ToString(), (int)b);

            销售类型 c = (销售类型)Enum.Parse(typeof(销售类型), "3");
            if (Enum.IsDefined(typeof(销售类型), c))
            {
                Console.WriteLine("{0} value is {1}", c.ToString(), (int)c);
            }
            else
            {
                Console.WriteLine("{0} is not an underlying value of the enumeration.", c.ToString());
            }

            Console.ReadKey();
        }
    }

嗯,人生从未有如此酸爽的感觉......


分享题目:使用Enum.Prase及Enum.TryPrase时的注意事项
转载注明:http://bzwzjz.com/article/pohdop.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 营销型网站建设 外贸网站设计方案 成都网站设计制作公司 成都网站制作 成都营销网站制作 成都做网站建设公司 营销网站建设 成都网站制作 响应式网站设计 成都网站建设 成都网站建设 企业网站设计 网站设计 成都网站设计 定制级高端网站建设 LED网站设计方案 教育网站设计方案 高端定制网站设计 企业网站建设 成都h5网站建设 专业网站设计 网站建设方案