不正确的 Resharper 建议 - "Merge Conditional Expression"

Incorrect Resharper Suggestion - "Merge Conditional Expression"

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

var result = cmd.ExecuteOracleScalar();
return result != null ? ((OracleString)result).Value : null;

此语句中的“!= null”是下划线,建议"Merge Conditional Expression"。如果我接受建议,它将更改为:

return ((OracleString)result).Value;

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

有没有使用三元运算符却没有这个警告的方法?

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

var result = cmd.ExecuteOracleScalar();
if (result == null)
    return null;
return ((OracleString)result).Value;

Resharper 然后首先建议我 "Convert to Return Statement" 这只是将它改回使用三元运算符。

有什么建议吗?

这看起来与 RSRP-434610 中确定的错误完全一样:

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

这个问题有一个修复版本 9.1,几天前才发布,虽然 watch out trying to upgrade from within VS.