空引用异常的奇数位置

时间:2014-05-21 14:33:35

标签: c#

我有以下代码段:

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行正在投掷

由于

1 个答案:

答案 0 :(得分:4)

第3行无法触发空引用异常。发布版本正在优化代码,这会更改行号。如果itemitem.Currentnull,则获得该异常。

但是,优化器通常从构建中删除行,因此异常更可能来自以后的行。

为了找到 exact 源,您需要在Debug版本中重现错误。或者添加更多的空值检查和日志记录。