可以将泛型类型限制为枚举吗? [复制]
Posted
技术标签:
【中文标题】可以将泛型类型限制为枚举吗? [复制]【英文标题】:Possible to constrain generic type to enums? [duplicate] 【发布时间】:2013-11-15 13:58:48 【问题描述】:我有一个通用类Foo<T>
,我想将T
约束为enum
类型。这在 C# 中可行吗?
我试过了
public class Foo<T> where T : enum // COMPILATION ERROR
但这种方法似乎只适用于class
和struct
。
同样,尝试将 T
约束为基础 enum
类型也将不起作用:
public class Foo<T> where T : int // COMPILATION ERROR
因为int
不是类或接口。
编辑我现在意识到之前已经发布过类似的问题,最终这个问题可以被删除。一个与我的问题更相关且包含与以下相同答案的问题是this。
2018 年 9 月 13 日更新 在最新的次要 C# 版本 7.3 中,现在可以将泛型类型限制为 Enum
。详情请见here。
【问题讨论】:
你是对的。我将删除这个问题。无论如何,感谢那些提供信息丰富的答案的人。 @AndersGustafsson 公平竞争。 @OndrejJanacek 可以肯定的是,您的意思是非讽刺性的,对吧?在这种情况下,谢谢。我有点有点担心删除这个问题,因为其他人已经收到了他们的回答的赞成票。 @AndersGustafsson 是的,这并不讽刺。你的问题迟早会被删除,所以当你意识到你的错误并且你可以自己删除它时,为什么还要打扰模组呢? @Ondrej 只是为了记录,事实证明我自己无法删除它,因为它已经收到了答案。我已经标记了它以删除,所以它最终会消失:-) 【参考方案1】:这在 C# 规范和实现中无效,但它在 IL 中是。
Jon Skeet 制作了一个名为 Unconstrained Melody 的库来解决这个问题:
https://code.google.com/p/unconstrained-melody/
虽然我从未使用过它,所以我无法提供任何关于如何利用它的见解。
【讨论】:
非常感谢您指出这一点。由于我的问题显然之前已经说过,但我将删除该问题。希望你能接受。 @AndersGustafsson 但以前没有给出这个答案,是吗?我会说,不要删除问题 @dcastro 实际上,它有,虽然不在上面提到的问题中,我认为。 Here 是我找到的一个答案。我会尝试将这个问题添加到上面的帖子中。以上是关于可以将泛型类型限制为枚举吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章