In C #, è possibile decorare un tipo Enum con un attributo o fare qualcos'altro per specificare quale dovrebbe essere il valore predefinito, senza cambiare i valori? I numeri richiesti potrebbero essere impostati su pietra per qualsiasi motivo, e sarebbe utile avere ancora il controllo sul valore predefinito.
enum Orientation
{
None = -1,
North = 0,
East = 1,
South = 2,
West = 3
}
Orientation o; // Is 'North' by default.
int
s in astratto , semplicemente perché capita di essere implementati come tipi numerici. Potremmo implementare gli enum come stringhe e ciò non cambierebbe la loro utilità. Considero la risposta qui una limitazione dell'espressività del linguaggio C #; la limitazione non è certamente inerente all'idea di "distinguere i valori da un insieme limitato".
enum
s come costrutti a livello di tipo, in particolare come tipi di somma (o vedere qui . Cioè, considerare ogni enum come un tipo distinto, in cui tutti i valori di quel tipo sono distinti dai valori di ogni altro enum. Da una tale mentalità, è impossibile per gli enum condividere qualsiasi valore, e in effetti, questa astrazione cade a pezzi quando si considera che il default di 0
può o non può essere valido per un dato enum, ed è semplicemente calpestato in ogni enum.