为什么枚举声明接受短而不是Int16
我想声明一个非默认底层类型的新枚举。 这有效:
public enum MyEnum : short { A, B, C, }
但我不明白为什么这不编译:
public enum MyEnum : System.Int16 { A, B, C, }
编译说
输入byte,sbyte,short,ushort,int,uint,long或ulong expected
我知道short是所有.NET版本(包括32/64位版本)的Int16的别名。 我不明白为什么编译器在该特定情况下给别名赋予不同的含义。
任何解释?
语法是正确的。 C#规范明确声明枚举的底层类型必须是byte
, sbyte
, short
, ushort
, int
, uint
, long
或ulong
。
在这里阅读微软对此的评论。
“……第二个例子是试图从一个派生自System.ValueType的类型inheritance,严格禁止……”
在这里阅读: