Почему объявление enum принимает короткое, но не Int16 - PullRequest
18 голосов
/ 01 июня 2011

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

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

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

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

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

Введите byte, sbyte, short, ushort, int, ожидаемый, длинный или длинный

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

Есть объяснения?

Ответы [ 2 ]

19 голосов
/ 01 июня 2011

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

Readчто Microsoft говорит об этом здесь .

2 голосов
/ 01 июня 2011

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

Читать здесь :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...