看到WHICH对象引用导致NullReferenceException

时间:2009-08-05 13:43:59

标签: c# .net visual-studio debugging exception

使用Visual Studio调试C#时,是否可以在给定的代码行上看到WHICH对象引用导致NullReferenceException?

我有一个奇怪的情况,偶尔,当从Visual Studio运行应用程序的调试版本时,我会在某一行得到NullReferenceException。

Visual Studio将弹出指向该行的异常助手框,但该行上使用的3个对象引用中没有一个在该点为空。


该行是:

myClassInstance.myMethod(myOtherClassInstance.IPAddressInstance.ToString());

我的两个类实例都是非null,因为IPAddress实例(具有其预期值)也是如此。

3 个答案:

答案 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