ReSharper-任何之后可能的'System.NullReferenceException'

smo*_*nes 3 linq resharper nullreferenceexception

我正在使用ReSharper Ultimate 2016.2,但在以前的版本中也已经看到了。当我在after之后使用ReSharper时,我会警告我说可能为'System.NullReferenceException'。下面的例子:FirstOrDefaultAny

Foo[] items = GetItems();
var myName = "MyName";
if (items.Any(x => x.Name == myName))
{
    var item = items.FirstOrDefault(x => x.Name == myName);
    var name = item.Name; // Possible 'System.NullReferenceException'
}
Run Code Online (Sandbox Code Playgroud)

警告是正确的还是上面的代码安全?

我知道我可以禁用警告,但这不是重点。我想确保没有任何机会NullReferenceException发生。自从我先检查Any,然后FirstOrDefault应该返回一个项目。还是我错过了什么?

上面的代码只是一个MCVE

更新:

如评论中所述,可以对代码进行优化(和简化)。问题不在于如何解决代码中的问题。但是NullReferenceException,如ReSharper 所述,实际上是否可能会发生?

Gei*_*ich 5

这是因为FirstOrDefault。如果条件不匹配,则为类返回NULL。ReSharper目前不考虑Any这一点。

您应该将其替换为 First