int? x = null;
x = x + 1; // Works, but x remains null
Spodziewam się, że kompilator spróbuje rzutować x jako int, ale najwyraźniej tak nie jest.Dlaczego próba dodania wartości pustej nie powoduje wyjątku InvalidOperationException?
Edytuj przez 280Z28: Zmieniono NullReferenceException
na InvalidOperationException
, co oznacza, że Nullable<T>.Value
wyrzuca, gdy HasValue
jest fałszywe.
Twoja logika jest dobrze sformułowana, ale naprawdę powinna rzucić wyjątek. Pomyśl o + jako o syntaktycznie prostszym sposobie działania number.Plus (2). Powinien zdecydowanie rzucić wyjątek, jeśli liczba jest zerowa lub może łatwo spowodować nieoczekiwane zachowanie. –
Co gorsza, jeśli masz numer i dodasz do niego wartość zerową, stanie się on zerowy. –