什么是NullReferenceException
试图访问或取消引用空对象引用时引发的异常。
继承链
-
ObjectExceptionSystemExceptionNullReferenceException
说明
尝试访问值为空的类型上的成员时,将引发NullReferenceException异常。NullReferenceException异常通常反映开发人员错误,可能引发的情况如下:
- 忘记了实例化引用类型
- 在初始化数组之前,忘记了维度。
- 从方法获取null返回值,然后对返回的类型调用方法。
- 使用的是表达式(例如,你要将方法或属性的列表链接在一起)来检索值,但尽管你要检查值是否为
null
,运行时仍会引发 NullReferenceException 异常。 出现这种情况的原因是表达式中的中间值之一返回null
。 因此,永远不会计算null
的测试。 - 正在枚举包含引用类型的数组元素,尝试处理其中一个元素会引发 NullReferenceException 异常。
null
传递的方法引发 NullReferenceException 异常。 某些方法会验证传递给它们的参数。 如果null
,则该方法将引发 System.ArgumentNullException 异常。 否则,会引发 NullReferenceException 异常。
以下 Microsoft 中间语言(MSIL)指令引发 NullReferenceException: callvirt
、cpblk
、cpobj
、initblk
、ldelem.<type>
、ldelema
、ldfld
、ldflda
、ldind.<type>
、ldlen
、stelem.<type>
、stfld
、stind.<type>
、throw
和 unbox
。
HRESULT
NullReferenceException 使用值为0x80004003 的 HRESULT COR_E_NULLREFERENCE。