2011-03-14 11 views
13

列挙型の基礎となる型/派生型(byte、short、intなど)を取得するにはどうすればよいですか?根底にある/派生したタイプの列挙型を取得しますか?

+1

@ChrisF:タイプではない価値を探しています。 – Will

+0

謝罪します。私は他のタイトルを誤解しました。もし私が近い投票を取り戻すことができたら私はそうするでしょう。自動挿入されたコメントを削除しました。 – ChrisF

答えて

19

あなたはEnum.GetUnderlyingType(enumType)を探しています。 MSDNから

サンプル:

static object GetAsUnderlyingType(Enum enval) 
{ 
    Type entype = enval.GetType(); 

    Type undertype = Enum.GetUnderlyingType(entype); 

    return Convert.ChangeType(enval, undertype); 
} 
+0

これで十分です。ありがとうございます。 – Will

3
using System; 

class Program 
{ 
    enum IntEnum : int { A } 

    static void Main(string[] args) 
    { 
     var intEnum = IntEnum.A; 

     Console.WriteLine(intEnum.GetType().GetEnumUnderlyingType()); 

     Console.WriteLine("Press any key to exit..."); 
     Console.ReadKey(); 
    }  
} 
関連する問題