gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 00:36:30 24 4
gpt4 key购买 nike

我使用的是 ReSharper Ultimate 2016.2,但我在以前的版本中也看到过这一点。当我在 Any 之后使用 FirstOrDefault 时,ReSharper 会给我一个警告说 Possible 'System.NullReferenceException'。示例如下:

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'
}

警告是否正确,或者上面的代码是否安全?

我知道我可以禁用警告,但这不是重点。我想确保 NullReferenceException 不可能发生。因为我首先使用 Any 检查,所以 FirstOrDefault 应该返回一个项目。还是我遗漏了什么?

上面的代码只是一个MCVE .

更新:

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

最佳答案

这是因为 FirstOrDefault。如果条件不匹配,它会为类返回 NULL。此时 ReSharper 不考虑 Any

您应该将其替换为调用 First

关于linq - ReSharper - 任何之后可能为 'System.NullReferenceException',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40928853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com