枚举的C#基类型

枚举的C#基类型,c#,types,enums,C#,Types,Enums,我有一个enum Color,它可能来自long或byte或int,我想知道它真正来自什么类型,long或byte或int?在这个过程中,我遇到了两个问题 首先,颜色的定义如下: enum Color : long { red = 1, black = 2, blue = 3 } 问题1 我编写下面的代码来执行这些操作: Console.WriteLine(typeof(Color)); // ConsoleApp7.Color Console.WriteLine

我有一个
enum Color
,它可能来自
long
byte
int
,我想知道它真正来自什么类型,
long
byte
int
?在这个过程中,我遇到了两个问题

首先,
颜色的定义如下:

enum Color : long
{
    red = 1,
    black = 2,
    blue = 3
}
问题1 我编写下面的代码来执行这些操作:

Console.WriteLine(typeof(Color));    // ConsoleApp7.Color
Console.WriteLine(typeof(Color).BaseType);    // System.Enum
此时,我遇到了第一个问题:
typeof(Color).BaseType
System.Enum
,这很奇怪,因为
Color
Enum
类型

所以我想知道你是否定义了
enum
类型,比如
enum Enum1{…}
,它实际上意味着:
类Enum1:enum{…}

问题2 根据问题1,如果我想得到它的实数基类型,我需要写:

Console.WriteLine(typeof(Color).BaseType.BaseType);
它的输出是
System.ValueType
,我们知道
int
byte
long
都是
System.ValueType
,我怎样才能得到关键字long


谢谢。

您想要的是基本类型,而不是基本类型:

var underlyingType = Enum.GetUnderlyingType(typeof(ConsoleColor))
还请注意,任何特定的枚举(如
颜色
)都是
系统的值类型和基类型。枚举
系统.值类型
(尽管
系统.枚举
是参考类型)。这就是为什么您的
typeof(Color).BaseType.BaseType
等于
System.ValueType

可能的