是否可以将泛型类型限制为枚举?
- 论坛
- 是否可以将泛型类型限制为枚举?
17 浏览
是否可以将泛型类型限制为枚举?
这个问题已经有了答案:
我有一个泛型类Foo
,我想把T
限制为enum
类型,这个在C#中可行吗?
我已经尝试了
public class Foo where T : enum // COMPILATION ERROR
但这个方法只适用于class
和struct
。
同样的,试图将T
限制为一个底层的enum
类型也不起作用:
public class Foo where T : int // COMPILATION ERROR
因为int
不是类或接口。
编辑我现在意识到这个问题之前已经有类似的问题并且最终这个问题可以被删除。一个与我的问题更相关,也包含以下相同答案的问题是这个。
2018年9月13日更新在最新的C# 7.3小版本中,现在可以将范型类型约束为Enum
。详见此处了解更多详情。
admin 更改状态以发布 2023年5月24日
匿名的
0 Comments
在 C# 规范和实现中,这不是有效的,但在 IL 中是有效的。
Jon Skeet 制作了一个名为 Unconstrained Melody 的库来解决这个问题:
https://code.google.com/p/unconstrained-melody/
虽然我从未使用过它,因此无法提供如何利用它的任何见解。