我有以下代码段:
1. var x = item.Current.DeepProperty;
2. var current = item.Current as IFoo;
3. if (current == null)
4. continue
5. var y = item.Bar.Baz
我在null reference exceptions
上获得了运行时line 3
。
任何人都可以解释原因吗?
我有正确的PDB,程序集在发布模式下编译,并启用了优化。
更新我发布了一个未经优化的版本,发现第5行正在投掷
由于
答案 0 :(得分:4)
第3行无法触发空引用异常。发布版本正在优化代码,这会更改行号。如果item
或item.Current
为null
,则将获得该异常。
但是,优化器通常从构建中删除行,因此异常更可能来自以后的行。
为了找到 exact 源,您需要在Debug版本中重现错误。或者添加更多的空值检查和日志记录。