首页 新闻 会员 周边

枚举类型+范形???

0
悬赏园豆:100 [已解决问题] 解决于 2010-10-20 17:15

问题描述:

  我想要定义一个范形类型 MyClass<T>,需要限定T必须是一个枚举类型,不知是否可行。

  写了下面的代码,但是VS不让我编译。

  class MyClass<T> where T : Enum

  {

    .....

  }

carlWolf的主页 carlWolf | 菜鸟二级 | 园豆:295
提问于:2010-10-20 16:26
< >
分享
最佳答案
0

好像不能编译时检查,可采用运行时检查

1 class MyClass<T> where T : struct
2 {
3 public MyClass()
4 {
5 if (typeof(Enum) != typeof(T).BaseType)
6 throw new XXXException("...");
7 }
8 }
9  

 

收获园豆:40
他山之石_ | 菜鸟二级 |园豆:325 | 2010-10-20 16:53
好吧,看来只能这样了
carlWolf | 园豆:295 (菜鸟二级) | 2010-10-20 17:14
其他回答(2)
0

根本做不到的吧,用typeof(T).IsEnum判断吧

收获园豆:30
Gray Zhang | 园豆:17610 (专家六级) | 2010-10-20 16:55
0

Enum 不能做 类型形参约束;做实参到是可以的。

参考:

http://msdn.microsoft.com/zh-cn/library/d5x73970%28v=VS.80%29.aspx


收获园豆:30
HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-10-20 17:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册