当我尝试在以下代码中添加null检查运算符时,这看起来很奇怪
WebOperationContext.Current?.IncomingRequest?.Headers[""];
这没有找到空值,Resharper以某种方式认识到问号将不起作用并将其变灰。 但是以下方法有效。
var httpIncomingRequest = WebOperationContext.Current?.IncomingRequest;
var _ = httpIncomingRequest?.Headers[]
IncomingRequest对象有什么特别之处,它会阻止我们使用null检查运算符?
答案 0 :(得分:1)
您错过了Headers
中的支票。这证明了我的假设。 Headers
https://dotnetfiddle.net/OqcL9U
WebOperationContext.Current?.IncomingRequest?.Headers?[""];
答案 1 :(得分:1)
我反编译了WebOperationContext
类,发现IncomingRequest
属性从不返回null:
public IncomingWebRequestContext IncomingRequest
{
get
{
return new IncomingWebRequestContext(this.operationContext);
}
}
所以看来R#正在分析程序集字节码并试图检查问号是否多余。