我正在尝试修复一个我无法重现的错误(yipeee!)。我有最初发现问题的用户复制的堆栈跟踪,它显示了在检查对象为null的行上抛出空引用异常(未处理)的代码。像这样:
private void someFunction()
{
radioButton1.CheckedChanged -= checkedChangedEventHandler
radioButton2.CheckedChanged -= checkedChangedEventHandler
if (someObject != null) // throws NullReferenceException...allegedly
{
if (someObject.Property == something)
{
// set properties on some UI components
}
}
}
这会导致什么样的条件?
更新
添加了更多代码。 SomeCunction方法由checkedChanged事件处理程序调用。
更新2
堆栈跟踪必须是错误的,因为你们有几个建议。没有运算符重载,并且该方法仅引用四个非UI组件的对象(标签和单选按钮),并且所有这些对象在初始化时仅分配一次,并且在获取此代码之前被多次引用,因此任何在此之前,空引用会被捕获。我将不得不更仔细地查看调用事件处理函数。
这是一个解释具有错误行号的堆栈跟踪的线程:
答案 0 :(得分:8)
someObject
重载了!=
运算符?
http://msdn.microsoft.com/en-us/library/8edha89s(v=vs.71).aspx
答案 1 :(得分:4)
两个最有可能的候选人是:
我认为2更有可能。
答案 2 :(得分:0)
我只是想在这里发布这个帖子,适合任何偶然发现这个帖子的人。 dlev得到了建议的正确答案,但我认为发布答案仍然是相关的:
Wrong line number on stack trace
stack trace line numbers are wrong with debug=false and compilerOptions="/debug:pdbonly"