有没有办法找出导致NullReferenceException的对象?
有没有办法找到导致控件从NullReferenceException流入catch块的对象名,这样我们就可以通过发出警报或记录null的对象来轻松调试?
没有。
您只能获得包含行号的堆栈跟踪。
这可以帮助您在这种简单的情况下:
var result = myString.Trim();
但它没有像这样的行:
var result = myObj.Method1().Method2();
什么是对象的名字 ? 它是我们程序员的设计时令牌,它识别对象引用 ,但它只有在编译之前才有意义。
有些对象有一个专用的Name
属性,但它没有(也不应该)与代码中对象引用的名称有关,在Name属性之后命名对象引用是视觉设计师的礼貌,但它是一个约定而不是要求。 此外,null引用不能仅具有Name属性,因为引用为null ,它尚未分配给具有可读Name的任何对象。
那么你可以查看堆栈跟踪,反映函数,显示参数并根据堆栈状态进行猜测 ,但我不是说因为对象可能在函数中的任何位置。