如果方法是运算符,如何找到调用c#类方法的代码?

时间:2015-01-25 06:31:02

标签: c# .net debugging nullreferenceexception

我是c#和visual studio的新手,所以我不知道用于调试的许多技术。

代码触发了此方法的异常:

public static implicit operator T(RangeNode<T> node)
{
    return node.Value;
}

“return node.Value;”区域用NullReferenceException突出显示,我可以看到传入的'node'是null。

为了解决这个问题,我需要找到调用代码,看看为什么它传入null。

通常在Visual Studio中,我可以通过单击函数签名上方的“X references”帮助程序来查找它,看看是什么调用它,但是这个运算符方法没有出现。我有什么想法可以找到调用代码吗?

2 个答案:

答案 0 :(得分:2)

执行程序时,在public static implicit operator T(RangeNode<T> node)内放置一个断点,并确保您拥有Visual Studio的调用堆栈窗口:

Visual Studio

俯视这个窗口:

Call Stack Window

现在,您可以单击调用堆栈中的任何方法调用,查看调用此方法的人员以及传递给它的参数。

答案 1 :(得分:2)

当您在调试模式下运行Visual Studio时,当您遇到类似的异常时,代码将基本上暂停执行。当发生这种情况时,您希望查看调用堆栈 - 这是您嵌入的每个函数,从入口函数(通常为Main)一直到您在运算符中的位置。当你在这里时,你可以遍历调用堆栈。

要确保此功能已打开,请转到DEBUG&gt; Windows&gt;调用堆栈。它会突出显示或打开它,通常在屏幕的底部。当您突破异常时,您当前所处的功能将位于堆栈的顶部,并且旁边应该有一个箭头。它下面的函数是使用此运算符的函数。如果单击它,它将带您到使用运算符的确切行。

使用调用堆栈调试是一个非常有用的工具!