枚举的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
可能的