Mi rendo conto che il modo corretto per gestire i tipi nullable consiste nell'utilizzare la proprietà HasValue. Ma vorrei sapere perché la seguente istruzione switch si interrompe sul caso nullo invece che sul valore predefinito. Utilizzo di VS2015 C# 4.0. Un altro computer che utilizza VS2010 C# 4.0 non ha lo stesso problema.Switch on Nullable Boolean: case passa a null quando il valore è true
private void Testing()
{
bool? boolValue = true;
switch (boolValue)
{
case null:
break; //even though value is true, code runs here
default:
break;
}
}
Edit: comportamento si osserva con qualsiasi Nullable
se solo case Null
e default
è specificato.
Non ho questo comportamento su VS2013 –
Direi che i tuoi simboli non sono aggiornati e che non sta eseguendo quello che pensi sia in esecuzione, o forse il compilatore sta facendo qualche strana cosa di ottimizzazione e combina i due blocchi uguali . Forse aggiungo un po 'di codice vero e vedi cosa fa ... –
Non capisco questo comportamento nel 2010. – thewisegod