gpt4 book ai didi

.net - 为什么空引用异常不能命名具有空引用的对象?

转载 作者:行者123 更新时间:2023-12-04 00:53:51 27 4
gpt4 key购买 nike

在我看来,我的很多调试时间都花在了在复杂语句中寻找空引用异常上。例如:

For Each game As IHomeGame in _GamesToOpen.GetIterator()

为什么,当我得到 NullReferenceException 时,我可以得到堆栈跟踪中的行号,而不是等于 null 的对象的名称。换句话说,为什么:
Object reference not set to an instance of an object.

代替
_GamesToOpen is not set to an instance of an object.

或者
Anonymous object returned by _GamesToOpen.GetIterator() is null.

或者
game was set to null.

这是严格的设计选择,旨在保护代码的匿名性,还是编译器设计中有令人信服的理由不将此信息包含在调试时异常中?

最佳答案

异常是运行时的东西,变量是编译时的东西。

实际上,您示例中的变量是一个表达式。表达式并不总是简单的变量。在运行时,将计算表达式并在结果对象上调用该方法。如果该表达式的值为 null ,运行时会抛出 NullReferenceException .假设如下:

Dim a as New MyObject
Dim b as String = MyObject.GetNullValue().ToString()

如果 GetNullValue() 运行时应该返回什么错误消息方法返回 null ?

关于.net - 为什么空引用异常不能命名具有空引用的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578734/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com