C#中List<T>属性返回null报错:未初始化集合问题排查
问题描述
我定义了如下简单模型类:
public class IndivudualDetail { public string Address1 { get; set; } public string City { get; set; } } public class ListDetails { public List<IndivudualDetail> itemlist { get; set; } }
在控制器中,我尝试按如下方式构建模型:
ListDetails listDetails = new ListDetails(); foreach (var item in Items) { IndivudualDetail indivudualDetail = new IndivudualDetail { Address1 = item.Address1, City = item.City }; listDetails.itemlist.Add(indivudualDetail); }
此时出现错误提示“listDetails.itemlist.get returned null”,请问我哪里操作有误?
问题原因与解决办法
错误核心是**ListDetails类中的itemlist属性仅声明了类型,未初始化实例**。创建ListDetails对象后,itemlist默认值为null,直接调用Add方法会触发空引用异常。
有两种常用解决方式:
方式一:在ListDetails构造函数中初始化列表
修改模型类,通过构造函数自动初始化itemlist:
public class ListDetails { public List<IndivudualDetail> itemlist { get; set; } public ListDetails() { itemlist = new List<IndivudualDetail>(); } }
后续创建ListDetails对象时,itemlist会自动成为空列表,可直接调用Add方法。
方式二:实例化ListDetails后手动初始化itemlist
若不想修改模型类,可在控制器代码中先为itemlist赋值:
ListDetails listDetails = new ListDetails(); listDetails.itemlist = new List<IndivudualDetail>(); foreach (var item in Items) { IndivudualDetail indivudualDetail = new IndivudualDetail { Address1 = item.Address1, City = item.City }; listDetails.itemlist.Add(indivudualDetail); }
内容的提问来源于stack exchange,提问作者Jey
相关产品推荐
相关产品推荐

