如何从泛型枚举中获取int?

时间:2015-04-10 13:45:59

标签: c#

我需要有关于泛型的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;

感谢您的帮助。

1 个答案:

答案 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