5

考虑下面的代码。我需要CreateOrAddToLists()循环调用该方法。第一次将该方法称为两个列表casedata.Cases并且casedata.Documents将为空,因此我可以通过分配cases来填充,casedata.Cases如下所示:

casedata.Cases = cases;

在对 CreateOrAddToLists() 列表的任何后续调用中,casedata.Cases并且casedata.Documents不会为空,我可以使用 AddRange() 将新数据添加到列表中:

casedata.Cases.AddRange(cases);

var casedata = new CaseData(); //contains lists to get populated

private void CreateOrAddToLists()
{   
    var cases = new List<Case>(); //gets data with from database
    var documents = new List<Document>(); //gets data with from database

    if (casedata.Cases == null)
    {
        casedata.Cases = cases;
    }
    else
    {
        casedata.Cases.AddRange(cases);
    }
    if (casedata.Documents == null)
    {
        casedata.Documents = documents;
    }
    else
    {
        casedata.Documents.AddRange(documents);
    }
}

之前有没有更好或更简洁的方法来进行空检查AddRange?我可以在代码行中完成吗?

4

2 回答 2

9

CaseData实例化两个列表对象的构造函数中,您可以确保它们不会为空,您可以使用AddRange.

public CaseData()
{
    Cases = new List<Case>();
    Documents = new List<Document>();
}
于 2016-01-25T11:23:11.890 回答
6

更清楚的是:

casedata.Cases = casedata.Cases ?? new List<Case>();
casedata.Cases.AddRange(cases);

casedata.Documents = casedata.Documents ?? new List<Document>();
casedata.Documents.AddRange(documents);
于 2016-01-25T11:30:01.200 回答