C# 4.0 无法使用条件(?:)运算符返回null
我有一个方法,它的返回类型是一个可为null的intC# 4.0 无法使用条件(?:)运算符返回null,c#-4.0,C# 4.0,我有一个方法,它的返回类型是一个可为null的int private int? LookupId(string name, string stateAbbreviation) 我试图清理代码,并决定在return语句中使用条件运算符 return id != 0 ? id : null; 基本上,如果id不是0,则转到head并返回id。它永远不会从db返回0。如果碰巧为0,则返回null 错误为“无法确定条件表达式的类型,因为“int”和“”之间没有隐式转换” 条件op用于替换正在运行的
private int? LookupId(string name, string stateAbbreviation)
我试图清理代码,并决定在return语句中使用条件运算符
return id != 0 ? id : null;
基本上,如果id不是0,则转到head并返回id。它永远不会从db返回0。如果碰巧为0,则返回null
错误为“无法确定条件表达式的类型,因为“int”和“”之间没有隐式转换”
条件op用于替换正在运行的If…Else语句
return id != 0 ? id : null;
在这种组合中,以这种方式使用条件语句有什么不对吗?我缺少什么?是
int?
类型的id
(而不是int
)?尝试返回id!=0 ? Id:(int?)空代码>?您需要一些东西来强制类型,例如
return id != 0? (int?)Id : null
检查这个
private int? getme()
{
int? id;
id= 0;
return id != 0 ? id : null;
}
确保id是int?
,而不是int
。将变量id与0进行比较,并返回另一个名为id(大写I)的变量。这是故意的吗?够有趣的,返回id!=0 ? (int?)Id:null代码>也可以工作。