111,129
社区成员
发帖
与我相关
我的任务
分享
public void Operation<T>() where T : enum
{
....
}
public enum MyEnum { Zero, One, Two, Three };
public void MyMethod()
{
foo<MyEnum>(MyEnum.One);
}
public void foo<T>(T value)
{
Type enumType = typeof(T);
if (enumType.BaseType != typeof(Enum))
throw new ArgumentException("T must be of type System.Enum");
Console.WriteLine((T)Enum.Parse(enumType, value.ToString()));
Console.WriteLine();
}
switch ((T)value)
{
case enumType.0:
....
break;
case enumType.1:
....
break;
....
default:
break;
}
用struct先,再加个判断
public void Operation<T>() where T : struct
{
if(!typeof(T).IsEnum) throw new ArgumentException("必须是枚举类型");
}


public enum MyEnum{Zero, One, Two, Three };
public void foo<T>(T value) where T : int
{
Console.WriteLine("It is {0}", value);
}
public void MyMethod()
{
foo<MyEnum>(MyEnum.One);
}