Resharper 对奇怪的再竖琴行为的解释?

Resharper 对奇怪的再竖琴行为的解释?,resharper,visual-studio-2013,Resharper,Visual Studio 2013,通常我依赖R#提示和建议,并且经常让它自动重写部分代码。然而,当我遇到下面这样的问题时,我怀疑这是否明智 此代码不显示“可能的空引用异常”警告: 如果我添加了一些检查篮子是否为null的代码(任何地方都没有其他更改),R#会突然警告我: 这种情况发生在旧的ASP.NET网站中,“Basket”是带有受保护修饰符的页面范围对象(我不知道这是否重要) R#在这里干什么?这是否意味着仅仅因为编码器测试对象是否为null,它实际上可能为null?默认情况下,ReSharper对值不为null持乐观态

通常我依赖R#提示和建议,并且经常让它自动重写部分代码。然而,当我遇到下面这样的问题时,我怀疑这是否明智

此代码不显示“可能的空引用异常”警告:

如果我添加了一些检查篮子是否为null的代码(任何地方都没有其他更改),R#会突然警告我:

这种情况发生在旧的ASP.NET网站中,“Basket”是带有受保护修饰符的页面范围对象(我不知道这是否重要)


R#在这里干什么?这是否意味着仅仅因为编码器测试对象是否为null,它实际上可能为null?

默认情况下,ReSharper对值不为null持乐观态度。(您可以在选项中对此进行更改,以便ReSharper在默认情况下将值视为null)。但是,一旦你开始检查空值,这个乐观的假设就被打破了,ReSharper将开始进行空值检查。

Wow。我不知道有答案——这是有道理的。