int? x = null;
x = x + 1; // Works, but x remains null
Mi aspetto che il compilatore tenti di trasmettere x come int, ma apparentemente non lo fa.Perché il tentativo di aggiungere a un valore nullo non genera un InvalidOperationException?
Modifica di 280Z28: modificato NullReferenceException
a InvalidOperationException
, ovvero ciò che Nullable<T>.Value
genera quando HasValue
è falso.
La tua logica è ben formulata, ma in realtà dovrebbe generare un'eccezione. Pensa + al modo sintatticamente più semplice di eseguire number.Plus (2). Dovrebbe sicuramente generare un'eccezione se il numero è nullo o può facilmente causare un comportamento imprevisto. –
Ancora peggio, se hai un numero e aggiungi null a esso, diventerà nullo. –