我有一个泛型类Foo<T>,我想约束T为一个enum类型.这可能在C#中吗?
我试过了
public class Foo<T> where T : enum // COMPILATION ERROR
Run Code Online (Sandbox Code Playgroud)
但这种方法似乎只对工作class和struct.
同样,尝试约束T到基础enum类型也不起作用:
public class Foo<T> where T : int // COMPILATION ERROR
Run Code Online (Sandbox Code Playgroud)
因为int不是类或接口.
编辑我现在意识到之前已经发布了类似的问题,最终可以删除这个问题.一个与我的问题更相关的问题,也包含与下面相同的答案,就是这个问题.
更新2018年9月13日在最新的次要C#版本7.3中,现在可以将泛型类型约束为Enum.有关详细信息,请参阅此处.
这是不是在C#规范和实施有效的,但它是在IL.
Jon Skeet建立了一个图书馆来解决这个叫做无约束旋律的问题:
https://code.google.com/p/unconstrained-melody/
虽然我从未使用它,所以我无法提供任何有关如何利用它的见解.
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |