除了解除引用对象引用设置为null之外,"NullReferenceException"的可能原因

And*_*ker 0 .net c# object-reference nullreferenceexception

我知道当NullReferenceException被抛出时,错误消息指出:

你调用的对象是空的.

我意识到当我尝试取消引用null对象引用时会抛出此消息.

错误消息暗示NullReferenceException除了对象引用之外可能还有一个原因null(可能是坏内存地址或类似内容).是这样的吗?


编辑:我更关心NullReferenceException可能抛出的原因而不是错误消息的措辞.错误消息的措辞正是提示问题的原因.

Jon*_*eet 5

我怀疑它试图与语言无关.例如,Visual Basic程序员用于"无"而不是"空".显然类型名称不是语言中立的,但至少如果消息是,那就是一个开始.

我不知道如果你试图取消引用一个"坏"的内存地址,你会得到这个...那时候会出现更糟糕的CLR错误.

另一种可能性是,它试图避免声明你已经明确地将引用的值设置为null - 例如,它可能只是引用类型变量的默认值.

  • "我不知道你是否会得到这个,如果不知何故你试图取消引用一个"坏"的记忆地址"`......实际上,这很有趣.取消引用地址为<65536的指针将抛出一个`NullReferenceException`,并且在其上面将工作或抛出一个`AccessViolationException`.Windows中保留地址<65536,以及前65536个地址.http://msdn.microsoft.com/en-us/library/ms810627.aspx (4认同)