我需要有关于泛型的enum i方法的最大值的信息..
public static T DoSomething<T>() where T : struct, IConvertible, IComparable, IFormattable
{
T pom1 = Enum.GetValues(typeof(T)).Cast<T>().Max();
...
在pom1中是T(enum)的最大可能值的值 - 它有效。但是当我想从pom1获取int时,问题就出现了。
int pom4 = (int)pom1;
我尝试过这样的事情:
int pom4 = (int)(ValueType)pom1;
仍然错误,如&#34;特定演员表无效&#34;
感谢您的帮助。
答案 0 :(得分:2)
使用VS2008 .Net 3.5
static void Main(string[] args)
{
DoSomething<ConsoleKey>();
Console.ReadKey(true);
}
public static T DoSomething<T>() where T : struct, IConvertible, IComparable, IFormattable
{
T pom1 = Enum.GetValues(typeof(T)).Cast<T>().Max();
Console.WriteLine(pom1);
//Cast to object to bypass bits of the type system...Nasty!!
int pom4 = (int)(object)pom1;
Console.WriteLine(pom4);
//Use Convert
int pom5 = Convert.ToInt32(pom1);
Console.WriteLine(pom5);
//Take advantage of passing a IConvertible
int pom6 = pom1.ToInt32(System.Globalization.CultureInfo.CurrentCulture);
Console.WriteLine(pom6);
return pom1;
}
输出......
OemClear
254个
254个
254