Ho una domanda sulla trasmissione a nullable enum. Ecco un codice:Trasmissione a enumerazione nullable
enum Digits
{
One = 1,
Two = 2
}
void Main()
{
int one = 1;
object obj = one;
var en = (Digits?) obj;
Console.WriteLine(en);
}
Mi dà InvalidCastException
in linea # 11.
Ma se ometto '?' simbolo in quella linea, dà il risultato corretto "Uno" ma non voglio perdere "nullability".
Come soluzione temporanea ora utilizzo var en = (Digits?) (int?) obj;
e funziona anche se non sono sicuro della completa correttezza di tale soluzione.
Ma mi chiedo perché il failover di enumerazione nullable non riesce nel primo caso?
Mi aspettavo che la fusione di tipi nullable agisce come segue:
- cast di tipo non annullabile, se il successo poi gettato al tipo nullable
- se null
viene passato poi risultato sarebbe null
così
Ma sembra non essere vero.
vedi anche http://stackoverflow.com/questions/5199419/c-sharp-cast-object-of-type-int-to-nullable-enum – simonalexander2005