问题描述
我写了下面的代码,但是投掷器正在抛出
可能的'system.invalidOperationException'
可能是什么原因?
Assert.Null(actual.Items?.FirstOrDefault(x => x.Date.Value.Year == 2019).Growth);
解决方法
FirstOrDefault
调用可能返回null
,并且在访问Growth
属性时会出现异常,请尝试再次使用空条件运算符?.
,例如{{ 1}}。它可以避免FirstOrDefault(x => x.Date.Value.Year == 2019)?.Growth
对于NullReferenceException
,InvalidOperationException
似乎具有x.Date
类型,您应该在获得Nullable<DateTime>
之前使用HasValue
属性,例如{{1} }。或GetValueOrDefault()
方法Value
。甚至是简化的x => x.Date.HasValue && x.Date.Value.Year == 2019
运算符x => x.Date.GetValueOrDefault().Year == 2019
我想你应该检查
actual.Items?.FirstOrDefault(x => x.Date.Value.Year == 2019)首先为null然后选择 将其作为变量
var currentItem = actual.Items?.FirstOrDefault(x => x.Date.Value.Year == 2019);
Assert.Null(currentItem .Growth);