我遇到了一个我似乎无法修复的错误。在对 Stack Overflow 进行了一些研究之后,似乎空合并运算符可以解决我的问题,但它并没有帮助。这是给出错误的代码:
List<OperationsReviewLevelResult> results = new List<OperationsReviewLevelResult>();
foreach (var approval in OperationsReviewers.ApprovalItems)
{
var result = new OperationsReviewLevelResult();
result.ApproverName = approval.Results.FirstOrDefault().Name ?? "";
result.ReviewLevel = approval.Name;
result.Comment = approval.Results.FirstOrDefault().Comments ?? "";
results.Add(result);
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到:
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
从行而来result.ApproverName = approval.Results.FirstOrDefault().Name ?? "";。我添加了空合并运算符来检查空值,但这并没有解决我的问题。错误是因为没有Resultsin批准所以我假设FirstOrDefaultlinq方法会返回默认值,当它意识到默认值有一个空值时Name,它会使用空合并运算符返回""右侧的空字符串运营商的。
如果我遗漏了什么,请告诉我,因为我似乎无法理解为什么即使添加空合并运算符也会收到此错误。
编辑:正如评论中所建议的,查看这篇文章帮助我更多地了解我收到此错误的原因。虽然问题有点不同,但我强烈建议阅读答案以全面了解我的问题。