В экземпляре объекта не задана ссылка на объект - PullRequest
2 голосов
/ 11 января 2011

У меня есть следующий код -

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 ]

6 голосов
/ 11 января 2011

Инициализация массива не инициализирует объекты в массиве. Попробуйте добавить вторую строку ниже (при условии, что вы хотите использовать конструктор по умолчанию):

webservice.singleSummary[] test = new webservice.singleSummary[1];
test[0] = new webservice.singleSummary();
2 голосов
/ 11 января 2011
  1. Включите отладчик в процесс.
  2. Определите, какая строка кода вызывает ошибку. (Предполагается, Visual Studio)
  3. Проверяйте ссылки на объекты в этой строке одну за другой, пока не определите, какая из них имеет нулевую ссылку.
  4. Поставьте нулевую проверку перед строкой, чтобы решить проблему.
1 голос
/ 11 января 2011

Я предполагаю, что у вашего xml есть пространство имен, которое вам нужно включить в xname для нужных элементов, но, как упоминают другие комментарии, мало что можно сделать без полного раскрытия.

...