Ist es in C # möglich, einen Aufzählungstyp mit einem Attribut zu dekorieren oder etwas anderes zu tun, um den Standardwert anzugeben, ohne dass die Werte geändert werden müssen? Die erforderlichen Zahlen können aus irgendeinem Grund in Stein gemeißelt sein, und es wäre praktisch, weiterhin die Kontrolle über die Standardeinstellungen zu haben.
enum Orientation
{
None = -1,
North = 0,
East = 1,
South = 2,
West = 3
}
Orientation o; // Is 'North' by default.
int
s in der Zusammenfassung zu vergleichen , einfach weil sie zufällig als numerische Typen implementiert sind. Wir könnten Aufzählungen als Zeichenfolgen implementieren, und dies würde ihre Nützlichkeit nicht ändern. Ich betrachte die Antwort hier als Einschränkung der Ausdruckskraft der C # -Sprache; Die Einschränkung ist sicherlich nicht in der Idee enthalten, "Werte von einer eingeschränkten Menge zu unterscheiden".
enum
s als Konstrukte auf Typebene zu betrachten, insbesondere als Summentypen (oder siehe hier . Das heißt, betrachten Sie jede Aufzählung als einen bestimmten Typ, wobei sich alle Werte dieses Typs von den Werten aller anderen Aufzählungen unterscheiden. Aus einer solchen Denkweise heraus ist es für Aufzählungen unmöglich, irgendeinen Wert zu teilen , und tatsächlich fällt diese Abstraktion auseinander, wenn man bedenkt, dass die Standardeinstellung von 0
kann für eine gegebene Aufzählung gültig sein kann oder nicht, und ist einfach in jede Aufzählung mit Schuhen besetzt.