使用Visual Studio调试C#时,是否可以在给定的代码行上看到WHICH对象引用导致NullReferenceException?
我有一个奇怪的情况,偶尔,当从Visual Studio运行应用程序的调试版本时,我会在某一行得到NullReferenceException。
Visual Studio将弹出指向该行的异常助手框,但该行上使用的3个对象引用中没有一个在该点为空。
该行是:
myClassInstance.myMethod(myOtherClassInstance.IPAddressInstance.ToString());
我的两个类实例都是非null,因为IPAddress实例(具有其预期值)也是如此。
答案 0 :(得分:2)
注意返回null对象的函数。这让我有一次在调试器中不是很清楚。看看这个:
public class FooBar
{
public int ReturnInt() { return 0; }
}
public FooBar ReturnNullObject()
{
return null;
}
// Execution code:
int exceptionalInt = ReturnNullObject().ReturnInt();
编辑:根据您的编辑,确保IPAddressInstance不返回null。
编辑:您可能希望将单行划分为几行。这应该有所帮助。
var ip = myOtherClassInstance.IPAddressInstance;
var ipString = ip.ToString();
myClassInstance.myMethod(ipString);
答案 1 :(得分:1)
如果您正在调用标有[DebuggerNonUserCode]
属性的代码,则问题可能出在框架代码中,而不是在该行上。
在任何情况下,您是否有可以发布的具体示例?
答案 2 :(得分:0)
在该行设置一个断点,然后执行“步入”直到你得到NRE。
没有魔法,对吗?有些代码尝试取消引用null
。
即使你像A.Property.Property2.ToString()
那样smth,因为Visual Studio说它们都不是null,问题就出在ToString()
方法,它位于一个程序集中,Visual Studio不会进入Debug