c#添加到列表空引用(列表实例存在)

时间:2016-05-11 06:58:17

标签: c# list

我试图将名为Process的对象添加到列表中。当我尝试将项添加到列表时,它返回一个空引用异常。 (lijst.Add)

我搜索网络并找到大多数答案:你没有实例化列表。那么它在这里被实例化,所以这段代码可能有什么问题?所有其他变量都正确填充。

这是代码:

private List<Process> CreateProcessFromXml()
    { 
        List<Process> lijst = new List<Process>();

        var path = Path.Combine(Server.MapPath("~/App_Data"), "Process.xml");
        XDocument process = XDocument.Load(path);
        var elementen = XElement.Load(path);
        foreach (var element in elementen.Elements("Proces"))
        {
            lijst.Add(
                new Process
                {
                    Naam = element.Element("Naam").Value,
                    TemplatePath = element.Element("TemplatePath").Value,
                    OutputPath = element.Element("OutPutPath").Value,
                    OutputDocumentName = element.Element("OutputDocumentName").Value
                });
        }
        return lijst;
    }

流程类:

public class Process
{
    public string Naam { get; set; }
    public string TemplatePath { get; set; }
    public string OutputPath { get; set; }
    public string OutputDocumentName { get; set; }
}

例外tekst:

第34行:foreach(elementen.Elements中的var元素(“Proces”))

第35行:{

第36行: lijst.Add(新流程(红色)

第37行:{

第38行:Naam = element.Element(“Naam”)。值,

源文件:xxxxxxxx行:36

堆栈追踪:

[NullReferenceException:对象引用未设置为对象的实例。]

XML: <Proces>
    <Naam>
    </Naam>
    <TemplatePath>
    </TemplatePath>
    <OutputPath>
    </OutputPath>
    <OutputDocumentName>
    </OutputDocumentName>
  </Proces>

提前致谢。

2 个答案:

答案 0 :(得分:3)

跟踪错误的更好方法是

foreach (var element in elementen.Elements("Proces"))
        {
            Process process = new Process();


             process.Naam = element.Element("Naam").Value;
             process.TemplatePath = element.Element("TemplatePath").Value;
             process.OutputPath = element.Element("OutPutPath").Value;
             process.OutputDocumentName = element.Element("OutputDocumentName").Value;
             lijst.Add(process)
        }

并添加一个断点以逐行检查代码

答案 1 :(得分:2)

您的列表已实例化,[fullTextField setActive:NO];将正常运行。问题出在这里:

[fullTextField setActive:YES]; //if already set to NO
[fullTextField setConstant:100];

检查此代码的每一行,以确保所有操作都返回预期结果。

相关问题