En C #, ¿es posible decorar un tipo Enum con un atributo o hacer otra cosa para especificar cuál debería ser el valor predeterminado, sin tener que cambiar los valores? Los números requeridos pueden establecerse en piedra por cualquier razón, y sería útil tener control sobre el valor predeterminado.
enum Orientation
{
None = -1,
North = 0,
East = 1,
South = 2,
West = 3
}
Orientation o; // Is 'North' by default.
int
s en el resumen , simplemente porque se implementan como tipos numéricos. Podríamos implementar enumeraciones como cadenas, y no cambiaría su utilidad. Considero que la respuesta aquí es una limitación de la expresividad del lenguaje C #; la limitación ciertamente no es inherente a la idea de "distinguir valores de un conjunto restringido".
enum
s como construcciones de nivel de tipo, específicamente como tipos de suma (o vea aquí . Es decir, considere cada enumeración como un tipo distinto, donde todos los valores de ese tipo son distintos de los valores de cualquier otra enumeración. Desde ese punto de vista, es imposible que las enumeraciones compartan algún valor, y de hecho, esta abstracción se desmorona cuando se considera que el valor predeterminado de 0
puede o no ser válido para una enumeración dada, y simplemente se calza en cada enumeración.