在C#中确定枚举的基础整数类型

时间:2014-06-28 17:32:50

标签: c# .net inheritance enums enumeration

请考虑以下枚举:

enum TestSByte:  sbyte  { Value1, Value2, }
enum TestInt16:  short  { Value1, Value2, }
enum TestInt32:  int    { Value1, Value2, }
enum TestInt64:  long   { Value1, Value2, }
enum TestByte:   byte   { Value1, Value2, }
enum TestUInt16: ushort { Value1, Value2, }
enum TestUInt32: uint   { Value1, Value2, }
enum TestUInt64: ulong  { Value1, Value2, }

var types = new Type []
{
    typeof(TestSByte),
    typeof(TestInt16),
    typeof(TestInt32),
    typeof(TestInt64),
    typeof(TestByte),
    typeof(TestUInt16),
    typeof(TestUInt32),
    typeof(TestUInt64),
};

foreach (var type in types)
{
    Console.WriteLine("Type: {0} - {1}.", type.Name, type.BaseType.Name);
}

输出:

Type: TestSByte - Enum.
Type: TestInt16 - Enum.
Type: TestInt32 - Enum.
Type: TestInt64 - Enum.
Type: TestByte - Enum.
Type: TestUInt16 - Enum.
Type: TestUInt32 - Enum.
Type: TestUInt64 - Enum.

我真正想要的是确定每个枚举的基本整数类型是什么。在观察窗口中浏览类型定义时,我找不到任何相同的指示。请指教。

1 个答案:

答案 0 :(得分:2)

您可以使用Enum.GetUnderlyingType

Console.WriteLine("Type: {0} - {1}.", type.Name, Enum.GetUnderlyingType(type).Name);