null值引用异常不一致
本文关键字:不一致 异常 引用 null | 更新日期: 2023-09-27 18:25:43
在尝试存储序列化类对象中的值时,我遇到了不一致的null值引用错误。
if ( item.current_location.city!=null )
{
var city = item.current_location.city.Select(i => i.ToString());
}
在上面的代码片段中,即使item
数组中的任何索引都有空值,也会成功插入。但在某些情况下它会抛出异常,我认为这与其他情况(当值为null时)无法以任何方式区分
item
也可能为空
current_location
也可能为空,
不仅是CCD_ 4。
这将有助于
if (item != null &&
item.current_location != null &&
item.current_location.city != null) {
...
}
编辑:
注意:这段代码是有效的,因为c#实现了布尔表达式的所谓快捷求值。如果item
应该是null
,则不计算表达式的其余部分。如果item.current_location
应该是null
,则不会评估最后一项。
(我没有在上面的代码中看到任何插入。)
从C#6.0开始,您可以使用空传播运算符(?):
var city = item?.current_location?.city?.Select(i => i.ToString());
if (city != null) {
// use city ...
}
如果没有看到您的数据集,我无法给出明确的答案,但您没有检查item对象或current_location对象上的空值。我建议你先把你的测试改为:
if (null != item && null != item.current_location && null != item.current_location.city)
{
...
}