En C #, est-il possible de décorer un type Enum avec un attribut ou de faire autre chose pour spécifier quelle devrait être la valeur par défaut, sans avoir à changer les valeurs? Les nombres requis peuvent être gravés dans la pierre pour une raison quelconque, et il serait pratique d'avoir toujours le contrôle sur la valeur par défaut.
enum Orientation
{
None = -1,
North = 0,
East = 1,
South = 2,
West = 3
}
Orientation o; // Is 'North' by default.
int
s dans l'abstrait , simplement parce qu'elles se trouvent être implémentées en tant que types numériques. Nous pourrions implémenter des énumérations sous forme de chaînes, et cela ne changerait pas leur utilité. Je considère la réponse ici comme une limitation de l'expressivité du langage C #; la limitation n'est certainement pas inhérente à l'idée de «distinguer les valeurs d'un ensemble restreint».
enum
s comme des constructions de niveau type, spécifiquement comme des types de somme (ou voir ici . Autrement dit, considérons chaque énumération comme un type distinct, où toutes les valeurs de ce type sont distinctes de toutes les autres valeurs d'énumération. Dans un tel état d'esprit, il est impossible pour les énumérations de partager une valeur, et en effet, cette abstraction se désagrège lorsque vous considérez que la valeur par défaut de 0
mai ou peut ne pas être valide pour une énumération donnée, et est simplement à cornes de chaussure dans chaque énumération.