El tipo subyacente es de hecho el mismo, pero el compilador depende del tipo que sea como el alias exacto. Este es un error de compilación basado en el análisis sintáctico. Eché un vistazo a la especificación de gramática C# y los tipos subyacentes definidos allí como tokens basados en el alias (por ejemplo, 'int', 'unit' ... etc.). El analizador espera cadenas específicas de de tipo integral regla de gramática.
el error es un error de análisis aunque ambos enum Enum : int
significa lo mismo que enum Enum : Int32
.
no sé la razón de este límite obligando a analizar paso, pero puede intentar adivinar: Desde Int32 no es una palabra clave que podría referirse a algo distinto del int estructura real. Si el analizador debe conocer el tipo para construir diferentes AST para cada tipo de base, entonces no puede depender de un token que no sea una palabra clave.
pesar de que el C# especificación define la int palabra clave con el alias explícita System.Int32, sigue siendo un problema para conseguir esta información sobre el tipo explícita (Int32) durante el análisis paso, ya que requiere una gran cantidad de información de contexto que no se puede inferir en este paso.
¿Cuál es el error en el tiempo de compilación? – Donnie
@Donnie: escriba byte, sbyte, corto, ushort, int, uint, largo o ulong esperado. Aparentemente, una restricción en .Net obliga al usuario a utilizar solo palabras clave en lugar de nombres de clase en una enumeración. – Webleeuw
Interesante. ¡Aprendí algo, yay! – Donnie