可以将泛型类型约束到枚举?

And*_*son 4 c# generics enums

我有一个泛型类Foo<T>,我想约束T为一个enum类型.这可能在C#中吗?

我试过了

public class Foo<T> where T : enum   // COMPILATION ERROR
Run Code Online (Sandbox Code Playgroud)

但这种方法似乎只对工作classstruct.

同样,尝试约束T到基础enum类型也不起作用:

public class Foo<T> where T : int    // COMPILATION ERROR
Run Code Online (Sandbox Code Playgroud)

因为int不是类或接口.


编辑我现在意识到之前已经发布了类似的问题,最终可以删除这个问题.一个与我的问题更相关的问题,也包含与下面相同的答案,就是这个问题.

更新20189月13日在最新的次要C#版本7.3中,现在可以将泛型类型约束为Enum.有关详细信息,请参阅此处.

Ada*_*rth 6

这是不是在C#规范和实施有效的,但它在IL.

Jon Skeet建立了一个图书馆来解决这个叫做无约束旋律的问题:

https://code.google.com/p/unconstrained-melody/

虽然我从未使用它,所以我无法提供任何有关如何利用它的见解.