Подтвердить что ты не робот

Почему декларация перечисления принимает короткий, но не Int16

Я хочу объявить новое перечисление с нестандартным базовым типом. Это работает:

public enum MyEnum : short
{ A, B, C, }

Но я не понимаю, почему это не скомпилируется:

public enum MyEnum : System.Int16
{ A, B, C, }

Компилятор говорит

Тип байта, sbyte, short, ushort, int, uint, long или ulong ожидается

Я понимаю, что short является псевдонимом для Int16 во всех версиях .NET(включая 32/64 бит). Я не понимаю, почему компилятор дает другое значение для псевдонима в этом конкретном случае.

Любое объяснение?

4b9b3361

Ответ 1

Синтаксис верен. Спецификация С# явно указывает, что базовый тип перечисления должен быть byte, sbyte, short, ushort, int, uint, long или ulong.

Прочитайте, что Microsoft говорит об этом здесь.

Ответ 2

"... Второй пример пытается наследовать от типа, который происходит из System.ValueType, который строго запрещен..."

Прочитайте здесь: