【发布时间】: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 只是为了记录,事实证明我自己无法删除它,因为它已经收到了答案。我已经标记了它以删除,所以它最终会消失:-)