无法使用条件(?:)运算符返回null

时间:2010-12-03 19:05:24

标签: c#-4.0

我有一个返回类型为可空int的方法。

 private int? LookupId(string name, string stateAbbreviation)

我正在尝试清理代码并决定在return语句中使用条件运算符。

return id != 0 ? id : null;

基本上,如果id不为0,请转到头并返回id。它永远不应该从db返回0。如果它偶然为0,则返回null。

错误是“无法确定条件表达式的类型,因为'int'和''之间没有隐式转换

条件op旨在替换正常运行的If ... Else语句。

在这种组合中尝试以这种方式使用条件有什么不对吗?我错过了什么?

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

您需要强制类型的内容,例如

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

答案 2 :(得分:2)

id类型为int?(而不是int)?

答案 3 :(得分:1)

检查

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