不正确的Resharper建议-“合并条件表达式”

Wri*_*boy 5 oracle resharper

给定一个返回单个字符串值的oracle查询,要从查询中获取该值,我使用以下两行:

var result = cmd.ExecuteOracleScalar();
return result != null ? ((OracleString)result).Value : null;
Run Code Online (Sandbox Code Playgroud)

该语句中的“!= null”强调了“合并条件表达式”的建议。如果我接受建议,它将更改为:

return ((OracleString)result).Value;
Run Code Online (Sandbox Code Playgroud)

这将引发异常,因为对于许多执行,返回的值将为null。

无论如何有使用三元运算符但没有此警告?

请注意,如果我将代码更改为:

var result = cmd.ExecuteOracleScalar();
if (result == null)
    return null;
return ((OracleString)result).Value;
Run Code Online (Sandbox Code Playgroud)

然后,Resharper首先建议我“转换为返回语句”,只需将其更改回使用三元运算符即可。

有什么建议么?

Aak*_*shM 3

这看起来与RSRP-434610中发现的错误完全相同:

  • 给定原始代码,检查对象引用是否为空,如果对象引用不为空,则访问对象的属性
  • R# 提出了一种始终访问属性的重构,因此当对象引用为 null 时将会失败

该问题有一个修复版本 9.1,该版本于几天前发布,但要小心尝试从 VS 内升级