Supponiamo, per il bene di questo esempio, che sto cercando di analizzare un file che specifica che due byte arbitrari nel record rappresentano il giorno della settimana, questa convenzione:Come posso definire un'enumerazione in cui più valori si associano a una singola etichetta?
DayOfWeek:
- 0 = Monday
- 1 = Tuesday
- 2 = Wednesday
- 3 = Thursday
- 4 = Friday
- 5 = Saturday
- 6 = Sunday
- 7-15 = Reserved for Future Use
posso definire un'enumerazione di mappare a questo campo, così:
public enum DaysOfWeek
{
Monday = 0,
Tuesday = 1,
Wednesday = 2,
Thursday = 3,
Friday = 4,
Saturday = 5,
Sunday = 6
ReservedForFutureUse
}
Ma come posso definire valori validi per ReservedForFutureUse
? Idealmente, mi piacerebbe fare qualcosa del tipo:
public enum DaysOfWeek
{
Monday = 0,
Tuesday = 1,
Wednesday = 2,
Thursday = 3,
Friday = 4,
Saturday = 5,
Sunday = 6
ReservedForFutureUse = {7,8,9,10,11,12,13,14,15}
}
Questo problema è solo esacerbato con campi più complicati; supponiamo, ad esempio, che sia il 7 che l'8, in questo caso, si associno allo stesso caso di errore o qualcosa del genere. Come si può catturare questo requisito in un'enumerazione C#?
Il problema di questo: come sarebbe lavorare andando nella direzione opposta? Passare dal valore int all'enumerazione funzionerebbe, ma in che modo C# potrebbe essere in grado di sapere a quale valore int si dovrebbe assegnare l'enum se lo si fa nell'altro modo? – jzworkman
Immagino che il modello di tipo eno sicuro dovrebbe essere di interesse. Dai un'occhiata a: http://stackoverflow.com/a/424414/1236044 – jbl
Puoi descrivere come utilizzerai questo valore 'Riservato'? In futuro cambierai enum, quindi perché dovresti aggiungere qualche valore che verrà modificato (non necessario per uno dei valori elencati) –