У меня есть enum Color
, оно может быть производным от long
или byte
или int
, и я хочу знать, от какого типа оно действительно происходит, long
или byte
или int
? В процессе я столкнулся с 2 проблемами.
Во-первых, Color
определяется следующим образом:
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 { ... }
, это на самом деле означает, что: class Enum1 : enum { ... }
?
Задача 2
Исходя из задачи 1, если я хочу получить базовый тип real , мне нужно написать:
Console.WriteLine(typeof(Color).BaseType.BaseType);
Его вывод System.ValueType
, мы знаем, что int
, byte
и long
все System.ValueType
, как я могу получить ключевое слово long ?
Спасибо.