Resharper提示可能引发System.InvalidOperationException的原因咨询
Resharper提示“Possible System.InvalidOperationException”的原因分析
嘿,我来帮你拆解下这段代码里的问题,Resharper的提示主要来自潜在的空值访问风险:
先看你的代码:
Assert.Null(actual.Items?.FirstOrDefault(x => x.Date.Value.Year == 2019).Growth);
Resharper触发这个提示的核心原因是**x.Date.Value存在无效访问的可能性**:
- 假设
Date是Nullable<DateTime>(也就是DateTime?)类型,当你在lambda表达式里直接访问x.Date.Value时,如果某个元素的Date没有值(也就是x.Date.HasValue为false),此时访问Value属性就会抛出System.InvalidOperationException。Resharper能通过静态分析检测到这种潜在的运行时异常场景,所以给你发出了提示。
另外还有个附带风险:如果FirstOrDefault返回null(也就是没有找到符合条件的元素),后续直接访问.Growth会触发NullReferenceException,不过这次Resharper的提示聚焦在前一个异常风险上。
修正建议
你可以先在lambda里检查Date是否有值,再访问Value,同时给.Growth加上空安全访问符,这样既能消除Resharper的提示,也能避免两种潜在异常:
Assert.Null(actual.Items?.FirstOrDefault(x => x.Date.HasValue && x.Date.Value.Year == 2019)?.Growth);
内容的提问来源于stack exchange,提问作者Ekta
相关产品推荐
相关产品推荐

