2014-01-09 48 views
5

我知道推薦的底層類型應該是一個Int32,因爲它是符合CLS的,而UInt32不是,但我不明白爲什麼這行會導致編譯器錯誤:底層枚舉類型的UInt32結果編譯器錯誤

public enum Strength : UInt32 

,這行不:

public enum Strength : uint 

我是在假設uint只是一個別名UInt32,是有什麼我失蹤?我瀏覽了MSDN文檔,但我可能很容易漏掉一些東西。

注意:使用VS12時,每當我使用整型(Int32,int ...等)的非別名時,就會發生這樣的錯誤。

回答

2

你是對的uintUInt32的別名,但是編譯器依賴於類型是期望的別名。 intInt32也是如此。這是來自解析器的編譯器錯誤。解析器期望來自其內部語法規則的特定字符串。在Stack Overflow上還有一些其他的文章。

這是另一篇文章,更多的信息。 C# int, Int32 and enums