2011-06-01 65 views
18

我想聲明一個新的枚舉與非默認的基礎類型。這工作:爲什麼枚舉聲明接受短但不是Int16

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

但我不明白爲什麼這個不能編譯的原因:

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

編譯器說

類型字節,爲sbyte,短,USHORT,INT , uint,long or ulong expected

據我所知,是Int16在所有.NET版本(包括32/64位風格)上的別名。我不明白爲什麼編譯器給這個特殊情況下的別名賦予不同的含義。

任何解釋?

+0

我記得有一個類似的問題越來越關閉昨天 – V4Vendetta 2011-06-01 09:57:31

+0

我發現兩個使用谷歌幾乎相同的問題:http://stackoverflow.com/questions/3774650/enum-members-of-int32-type和http://stackoverflow.com/questions/1813408/c-int-int32 -and-枚舉。 – 2011-06-01 10:00:01

+0

儘管花了幾分鐘的時間閱讀搜索結果,但我沒有找到它:) – 2011-06-01 10:00:32

回答

17

語法無誤。 C#規範明確指出,枚舉的基礎類型必須是byte,sbyte,,int,uint,longulong

閱讀微軟對此說的here

+1

+1你的鏈接指向一個更簡潔的解釋:) – Gishu 2011-06-01 10:02:49

+0

鏈接已損壞。請修復 – Dmitry 2013-04-26 17:36:16

+0

@Dmitry鏈接被微軟殺死 - 當我發佈它時它就起作用。我現在修復了它,但是如果每次破壞都不修復它。 – 2013-04-28 11:59:18

2

「......第二個例子是試圖從從System.ValueType,這是嚴格禁止的派生的類繼承......」

閱讀here

+0

很多討論的東西看起來像一個小東西:) – Gishu 2011-06-01 09:59:02

+0

eheheh!...我同意! ;) – danyolgiax 2011-06-01 10:01:07