enum: Come effettuare il cast ad int? (e viceversa)

Definizione enum

Come nel post scritto in precedenza enum: Quali sono i valori presenti in essa? anche in questo caso abbiamo bisogno di definire una enum e per pigrizia utilizzeremo la stessa dell’articolo precedente.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public enum Room
{
    Attic,
    Loft,
    SpareRoom,
    Bedroom,
    Bathroom,
    Nursery,
    Study,
    UtilityRoom,
}

Vi ricordo che i valori associati alle singole costanti della enum sono di tipo int (ma dai???) e se non definiti manualmente partono da 0 ed incrementano.

  • Il valore associato ad Attic corrisponde a 0
  • Il valore associato a Loft corrisponde a 1
  • [ … ]
  • Il valore associato ad UtilityRoom corrisponde a 7 (se non ho fatto male i conti)

Tips

Se la enum viene utilizzato solamente nel codice per prendere delle decisioni potete tranquillamente non specificare il valore int associato alla singola voce. Se -invece- il valore finisce sul database, vi consiglio di specificarlo in modo da evitare problemi in futuro. Esempio? Per puro errore e/o bug viene inserita una nuova voce nella lista cambiando totalmente la numerazione a seguire.

1
2
3
4
5
6
public enum Room
{
    Attic = 10,
    Bedroom = 34,
    UtilityRoom = 1,
}

Cast: enum ad int

Ora entriamo nel vivo della necessità: come converto il valore della enum in un int?

1
var valueInt = (int)Room.Bedroom;

Cast: int ad enum

E se volessi fare il contrario? Come devo procedere?

1
var valueEnum = (Room)valueInt;

Semplice no?