C# 什么';C&x27有什么问题;什么是枚举?!它';太难看了

C# 什么';C&x27有什么问题;什么是枚举?!它';太难看了,c#,enums,C#,Enums,真的。C#的枚举只是一个普通的眼中钉。(海事组织) 当您从字符串解析它时,会得到一整行臃肿的遗留代码: (EnumType)Enum.Parse(typeof(EnumType), value); 真的吗?一个接受类型参数并吐出对象的解析方法?! 事实上,可能是: Enum.Parse<EnumType>(value); Enum.Parse(值); 它是一种值类型。所以不能用“as”代替类型转换。它不共享基类型。所以你也不能为它写扩展。你要么求助于一个静态的“助手类”(呜呼…

真的。C#的枚举只是一个普通的眼中钉。(海事组织)

当您从字符串解析它时,会得到一整行臃肿的遗留代码:

(EnumType)Enum.Parse(typeof(EnumType), value);
真的吗?一个接受类型参数并吐出对象的解析方法?! 事实上,可能是:

Enum.Parse<EnumType>(value);
Enum.Parse(值);

它是一种值类型。所以不能用“as”代替类型转换。它不共享基类型。所以你也不能为它写扩展。你要么求助于一个静态的“助手类”(呜呼…),要么求助于。。。在字符串上栓接扩展方法?!比失败更糟糕


有人有优雅的东西吗?

.NET4增加了很多。。。美好。。。要枚举:


我正在为.net编写代码,使用
enum
从未失败过。对于某些地方来说,它是优雅的,你想要达到的并不优雅。将几个
enum
s强制转换为公共基?为何枚举是一种强类型常量集,应该这样使用。解析
enum
并不像编写
(EnumType)enum.Parse(typeof(EnumType),value)那样频繁变得烦人。如果它真的继续写下去:

static class EnumHelper
{
   public T Parse<T>(string val) { return (T)Enum.Parse(typeof(T), val); }
}
静态类枚举帮助器
{
公共T解析(字符串val){return(T)Enum.Parse(typeof(T),val);}
}

您可能需要重新表述wtf的sEnumType.Parse(value)不起作用?这里有真正的问题吗?您可以使用
.ToEnum()
创建扩展方法,将任何字符串转换为枚举。只是隐藏了丑陋。语言和语调真的不合适。尽管语调狂躁,但这实际上是一个很好的问题…我说保留它。顺便说一句,这是给你的
;-)谢谢你的回答。我们不知道对enum的这些更改。您能为这个答案添加更多细节,这样它就不仅仅是一个链接吗?@RyanGates神奇的是enum.TryParse()@我知道这就是魔法所在。我认为答案应该能够独立存在,而不需要链接。我不相信这个答案可以。他实际上并没有说失败,这是从WTF的过渡,是对dailywtf的一种开玩笑的引用:)但我完全同意,如果你使用这样的枚举,你可能做了错误的事情。“你要么求助于静态的“助手类”(呜呼…)。不,我不想投靠普通人。我想完全执行您正在执行的操作,但对类型T有“enum generic constraint”。在运行时之前,您不会知道传入了错误的类型T。@true。最好是在T:struct中添加