Со следующего представления о нулевом коалесцирующем операторе (??) в C#.Неявное литье результата оператора Null-Coalescing
int? input = -10;
int result = input ?? 10;//Case - I
//is same as:
int result = input == null? input : 10; // Case - II
Хотя по определению и использованию случаи I и II являются одинаковыми.
Удивительно, что в случае компилятора Case-I возможно неявное литирование int? int, а в Case-II - ошибка: «Ошибка 1 Не может неявно преобразовать тип« int »? к «междам»»
Что это такое, что я пропускаю о операторе нуль-коалесцирующем?
Спасибо за ваш интерес.
Первое испытание следует использовать '=' вместо '' == – hvd
@hvd: Совершенно верно, я виню ОП за то, что плохой пример. :-P Отредактировано. –
На самом деле, я думаю, что ваш ответ немного выключен ... 'a? b: c', где 'b' является' int? 'и' c' является 'int', является абсолютно допустимым. Однако результат имеет тип 'int?', Поэтому вам понадобится '(a? B: c) .Value'. Или ваша предложенная коррекция, которая находится на месте. – hvd