奇怪的ReSharper行为的解释?

时间:2013-12-05 17:25:42

标签: resharper visual-studio-2013

通常我依赖R#提示和建议,而且我经常让它自动重写部分代码。但是,当我遇到类似下面的问题时,我想知道这是否明智。

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

enter image description here

如果我添加一些检查Basket为null的代码(在任何地方没有其他更改),突然R#警告我:

enter image description here

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

R#在这做什么?它是否因为编码器测试一个对象为null而推断它实际可能为空?

1 个答案:

答案 0 :(得分:1)

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