你调用的对象是空的

时间:2011-01-11 16:44:02

标签: c# xml web-services object nullreferenceexception

我有以下代码 -

private static void convert()
    {
        string csv = File.ReadAllText("test.csv");
        XDocument doc = ConvertCsvToXML(csv, new[] { "," });
        doc.Save("update.xml");

        XmlTextReader reader = new XmlTextReader("update.xml");
        XmlDocument testDoc = new XmlDocument();
        testDoc.Load(@"update.xml");

        XDocument turnip = XDocument.Load("update.xml");
        webservice.function[] test = new webservice.function[1];
        webservice.function CallWebService = new webservice.function();

        foreach(XElement el in turnip.Descendants("row"))
        {
                            test[0].com = System.Convert.ToInt32(el.Descendants("var").Where(x => (string)x.Attribute("name") == "com").SingleOrDefault().Attribute("value").Value);
            test[0].Centre = el.Descendants("var").Where(x => (string)x.Attribute("name") == "Centre").SingleOrDefault().Attribute("value").Value;
            test[0].CCentre = el.Descendants("var").Where(x => (string)x.Attribute("name") == "CCentre").SingleOrDefault().Attribute("value").Value;

            MessageBox.Show(test[0].person, "person");
            MessageBox.Show(System.Convert.ToString(test[0].actually), "Actually");
            MessageBox.Show(System.Convert.ToString(test[0].com), "Com");

            CallWebService.updateFeedStatus(test);
        }

它出现了错误 - NullReferenceException未处理,表示对象引用未设置为对象的实例。第一行测试[0] .account。

发生错误

我怎样才能超越这个?

3 个答案:

答案 0 :(得分:6)

初始化数组不会初始化数组中的对象。尝试添加下面的第二行(假设您要使用默认构造函数):

webservice.singleSummary[] test = new webservice.singleSummary[1];
test[0] = new webservice.singleSummary();

答案 1 :(得分:2)

  1. 在流程上放置一个调试器。
  2. 确定生成错误的代码行。 (假设Visual Studio)
  3. 逐个测试该行上的对象引用,直到确定哪一个具有空引用。
  4. 在该行之前进行空检查以解决问题。

答案 2 :(得分:1)

我猜你的xml有一个你需要在你的xname中包含所需元素的命名空间,但正如其他评论所提到的,没有完全公开就没有什么可以做的。