添加到导致空引用的列表中

本文关键字:列表 引用 添加 | 更新日期: 2023-09-27 18:21:39

我有一个类,它为上传的CSV的格式建模(我使用的是FileHelpers库):

[DelimitedRecord(",")]
public class CSVModel
{
    [FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
    public string Field1;
    [FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
    public string Field2;
}

然后,在逐行解析文件后,我有一个类来显示上传的结果:

public class UploadResult
{
    public List<CSVModel> InvalidField;
    public List<CSVModel> Valid;
}

我不会详细介绍我是如何实现FileHelpers的,因为它都是有效的-文件可以成功上传-只有当我尝试将CSV模型的实例添加到这样的列表中时,它才会中断:

public static UploadResult ProcessCSV(CSVModel[] records)
{
    UploadResult uploadResult = new UploadResult();
    for (int i = 1; i < records.Length; i++)
    {
        CSVModel csvModel = records[i];
        // check stuff
        uploadResult.Valid.Add(csvModel); // this is where it breaks
    }
    return uploadResult;
}

这个例外只给了我空引用。我可能做错了什么?

编辑:当我调试时,当我尝试将"csvModel"添加到列表时,它肯定不是空的

添加到导致空引用的列表中

Validnull,您必须初始化它:

public class UploadResult
{
    public List<CSVModel> InvalidField = new List<CSVModel>();
    public List<CSVModel> Valid = new List<CSVModel>();
}

或通过构造函数:

public class UploadResult
{
    public UploadResult()
    {
        InvalidField =  new List<CSVModel>();
        Valid =  new List<CSVModel>();
    }
    public List<CSVModel> InvalidField;
    public List<CSVModel> Valid;
}

您正在初始化UploadResult,但没有初始化List属性。试试这样的东西:

UploadResult uploadResult = new UploadResult {
    InvalidField = new List<CSVModel>(),
    Valid = new List<CSVModel>()
};