为什么枚举声明接受短而不是Int16

时间:2011-06-01 09:51:29

标签: c# .net enums

我想声明一个非默认底层类型的新枚举。这有效:

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

但我不明白为什么不编译:

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

编译说

  

输入byte,sbyte,short,ushort,int,   uint,long或ulong预期

据我所知,short是所有.NET版本(包括32/64位版本)的Int16的别名。我不明白为什么编译器在特定情况下给别名赋予了不同的含义。

有任何解释吗?

2 个答案:

答案 0 :(得分:19)

语法正确。 C#规范明确声明枚举的基础类型必须是bytesbyteshortushortintuint,{{1 }或long

阅读微软对此here的评论。

答案 1 :(得分:2)

“......第二个例子是尝试从一个派生自System.ValueType的类型继承,这是严格禁止的......”

阅读here