为什么resharper认为asp.net请求[" abc"]永远不能为空?

时间:2018-01-16 16:08:24

标签: c# resharper

我使用的是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)

1 个答案:

答案 0 :(得分:1)

好的,感谢一位同事,我一直认为这是我的错。我把答案放在这里,以防它对其他人有用,但我想主持人可能会删除整件事。

我发布的代码段不完整;实际代码更像是这样:

string errorId = Request["errorid"];
log.Debug(HttpUtility.HtmlEncode(errorId));
if (errorId != null) ...

R#正确判断的是,如果errorId为null,则“log”行会引发异常,因此当它到达'if'行时,errorId不能为null。