Perché 0 è il valore enum predefinito? Facilità di implementazione runtime. Il valore predefinito di qualsiasi tipo di valore è bit a bit 0 e, presumibilmente, un riferimento null è rappresentato da bitwise 0. Pertanto, per costruire inizialmente un oggetto con i suoi valori predefiniti, è sufficiente conoscere la sua dimensione; il runtime non ha bisogno di conoscere o elaborare nulla sulla struttura dell'oggetto. Allo stesso modo, il costruttore del tipo di valore predefinito può semplicemente riempire un intervallo di memoria con zero.
Piaccia o no, è così che è. Quello che dobbiamo fare in risposta è quando progettiamo un enum, qualunque nome sia un valore predefinito adatto, dargli il valore 0. Se non c'è un valore predefinito adatto, i tuoi metodi che accettano un enum come parametro potrebbero verificare che sia impostato correttamente, per esempio
void ProcessColor(Color c) {
if (c == 0)
throw new ArgumentException("Color is not set", "c");
//...
}
fonte
2012-05-24 17:56:38
Perché un "valore minimo"? Perché non avere enumerazioni che contano? – BoltClock
Perché dovresti iniziare i valori con qualsiasi valore diverso da 0? La maggior parte dei programmatori è abituata a usare 0 come punto di partenza durante il conteggio, ad es. come quando si lavora con gli array. Ti suggerirei di non dare nemmeno i valori delle tue enumerate a meno che tu non abbia una buona ragione per farlo. –
@JesseWebb Questo è un esempio. Ma potrei dichiarare l'enumerazione, in cui ogni membro ha un valore specifico. Recentemente ho lavorato con file di un certo formato, in cui ogni voce era definita da 1, 2 o 3 valori di tag. – username