静态方法的空指针错误
本文关键字:错误 空指针 静态方法 | 更新日期: 2023-09-27 18:30:52
我从我的应用程序那里得到了一些错误报告,这些报告似乎没有任何意义。我有一个静态类,其中包含许多从代码的其他部分调用的公共静态方法。这些方法中的大多数在 XML 文档上创建一个元素。
大多数这些方法中的第一行是调用同一类中的私有静态方法,该方法在 XML 文档上创建元素并返回它,如下所示:
private static XmlElement BuildCmd(string name)
{
XmlElement e = OtherClass.NewElement("CMD");
e.SetAttribute("type", name);
return e;
}
public static uint SendFlightReport(FlightData info, AircraftInfo aInfo)
{
XmlElement cmd = BuildCmd("pirep");
....
some other stuff
....
}
异常生成的堆栈转储都报告调用 BuildCmd 的行作为违规行,这毫无意义 - 调用静态方法时,如何拥有空指针(或者在 C# 中 - 对象引用未设置为对象的实例)?
编辑:对于那些询问的人,这是OtherClass.NewElement的代码:
public class OtherClass {
private readonly XmlDocument doc = new XmlDocument();
public XmlElement NewElement(string name) {
lock (doc)
return doc.CreateElement(name);
}
}
我怀疑您正在运行发布版本。 在这种情况下,由于编译器优化,行号通常略有偏差。 尝试运行调试版本;您可能会发现异常实际上是在.... some other stuff ....
的第一行或第二行引发
例如,请参阅示例
https://stackoverflow.com/a/114854/385844
http://social.msdn.microsoft.com/Forums/zh/vsdebug/thread/afb7ae70-3e0c-4ea9-86ab-633fe1f9cf6a(VB.NET,但仍然...
http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/6af62159-fe6b-4554-8e46-d2b6c06fa253