我使用的是ASP.NET网络表单,我有一个这样的片段:
string errorId = Request["errorid"];
if (errorId != null) ...
Resharper说"表达总是如此"对于第二行,并希望删除条件。
文档https://msdn.microsoft.com/en-us/library/system.web.httprequest.item(v=vs.110).aspx清楚地表明,如果找不到指定的密钥,则返回NULL。
为什么R#认为索引器永远不会返回null?除了忽略警告之外,还有什么可以解决的吗?
我在撰写本文时使用的是最新版本(2017.3.1)
答案 0 :(得分:1)
好的,感谢一位同事,我一直认为这是我的错。我把答案放在这里,以防它对其他人有用,但我想主持人可能会删除整件事。
我发布的代码段不完整;实际代码更像是这样:
string errorId = Request["errorid"];
log.Debug(HttpUtility.HtmlEncode(errorId));
if (errorId != null) ...
R#正确判断的是,如果errorId为null,则“log”行会引发异常,因此当它到达'if'行时,errorId不能为null。