Невозможно вернуть null с условным (?:) оператором

У меня есть метод, для которого возвращаемым типом является int с нулевым значением.

private int? LookupId(string name, string stateAbbreviation)

Я пытаюсь очистить код и решил использовать условный оператор в операторе return.

return id != 0 ? id : null;

В принципе, если id не равен 0, зайдите в голову и верните идентификатор. Он никогда не должен возвращать 0 из db. Если, случайно, это 0, верните null.

Ошибка: "Тип условного выражения не может быть определен, потому что нет никакого неявного преобразования между" int "и" "

Условный op предназначен для замены действующего оператора If... Else.

Есть ли что-то не так, пытаясь использовать условное выражение таким образом, в этой комбинации? Что мне не хватает?

4 ответа

Является id типа int? (а не int)?


Попробуйте return id != 0 ? Id : (int?)null;?


Вам нужно что-то, чтобы принудить тип, например

return id != 0? (int?)Id : null


Проверьте это

private int? getme()
 {
 int? id;
 id= 0;
 return id != 0 ? id : null;
 }

licensed under cc by-sa 3.0 with attribution.