2014-01-09 5 views
5

Ich weiß, dass der empfohlene zugrunde liegende Typ ein Int32 sein sollte, wie es CLS-kompatibel ist, während UInt32 nicht ist, aber was ich nicht herausfinden kann, warum diese Zeile einen Compiler-Fehler ergibt :Underlying Enum Typ der UInt32-Ergebnisse in Compiler Fehler

public enum Strength : UInt32 

und diese Linie nicht:

public enum Strength : uint 

ich unter der Annahme war, dass uint für UInt32 nur ein Alias ​​ist, gibt es etwas, das ich fehle? Ich habe die MSDN-Dokumentation durchgesehen, aber ich hätte leicht etwas übersehen können.

Hinweis: Mit VS12, und dieser Fehler sieht aus wie es auftritt, wenn ich den Namen ohne Namen mit einem Ganzzahl-Typ (Int32, int ... etc) verwende.

Antwort

2

Sie sind korrekt uint ist ein Alias ​​für UInt32, aber der Compiler hängt von dem Typ ab, der als Alias ​​erwartet wird. Das gleiche passiert mit int und Int32. Dies ist ein Compilerfehler vom Parser. Der Parser erwartet spezifische Zeichenfolgen aus seinen internen Grammatikregeln. Es gibt ein paar andere Beiträge darüber auf Stack Overflow.

Hier ist ein weiterer Beitrag mit weiteren Informationen. C# int, Int32 and enums