问题描述:
我想要定义一个范形类型 MyClass<T>,需要限定T必须是一个枚举类型,不知是否可行。
写了下面的代码,但是VS不让我编译。
class MyClass<T> where T : Enum
{
.....
}
好像不能编译时检查,可采用运行时检查
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
根本做不到的吧,用typeof(T).IsEnum判断吧