是否可以将泛型类型限制为枚举?

17 浏览
0 Comments

是否可以将泛型类型限制为枚举?

这个问题已经有了答案

创建一个范型方法,限制 T 为枚举类型

我有一个泛型类Foo,我想把T限制为enum类型,这个在C#中可行吗?

我已经尝试了

public class Foo where T : enum   // COMPILATION ERROR

但这个方法只适用于classstruct

同样的,试图将T限制为一个底层的enum类型也不起作用:

public class Foo where T : int    // COMPILATION ERROR

因为int不是类或接口。


编辑我现在意识到这个问题之前已经有类似的问题并且最终这个问题可以被删除。一个与我的问题更相关,也包含以下相同答案的问题是这个

2018年9月13日更新在最新的C# 7.3小版本中,现在可以将范型类型约束为Enum。详见此处了解更多详情。

admin 更改状态以发布 2023年5月24日
0
0 Comments

在 C# 规范和实现中,这不是有效的,但在 IL 中是有效的。

Jon Skeet 制作了一个名为 Unconstrained Melody 的库来解决这个问题:

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

虽然我从未使用过它,因此无法提供如何利用它的任何见解。

0