一尘不染

C#中的枚举类型约束

c#

这个问题已经在这里有了答案

7年前关闭。

可能重复:
有人知道缺少枚举泛型约束的良好解决方法吗?

C#不允许在上进行类型约束的原因Enum是什么?我敢肯定,疯狂背后有一种方法,但是我想了解为什么这不可能。

下面是我想做的(理论上)。

public static T GetEnum<T>(this string description) where T : Enum
{
...
}

阅读 491

收藏
2020-05-19

共1个答案

一尘不染

这是偶尔需要的功能。

正如我喜欢指出的那样,除非有人设计,规范,实施,测试,记录并发布该功能,否则所有功能都不会实现。到目前为止,还没有人为此做过。没有什么特别不寻常的原因;为什么?我们还有很多其他事情要做,预算有限,而且这从来没有超过“这不是很好吗?”
语言设计团队中的讨论。

CLR不支持它,因此为了使其工作,除了语言工作外,我们还需要进行运行时工作。 (请参阅答案评论)

我可以看到有一些不错的用例,但是它们都不是那么引人注目,以至于我们会做这项工作,而不是更频繁地要求使用的数百种其他功能之一,或者具有更引人注目的和更深远的影响使用案例。(如果我们要弄混这段代码,我个人会优先考虑委托约束的方式,远高于枚举约束的方式。)

2020-05-19