C#中以其他类为类型定义List属性?实例报错排查
问题分析:"Object reference not set to an instance of an object." 异常原因及修复方案
你遇到的空引用异常,核心问题出在**DataList类的StoreListData属性未初始化**上,具体细节如下:
- 当你执行
var storeList = new DataList();时,C#中引用类型(比如List<StoreList>)的默认值是null,所以此时storeList.StoreListData是一个空引用 - 接下来你在foreach循环里调用
storeList.StoreListData.Add(...),试图对一个null的列表执行添加操作,自然就触发了空引用异常
修复方案有两种,任选其一即可:
方案1:在DataList类定义时初始化属性
修改DataList的代码,直接在属性声明时创建空列表实例,这样每次实例化DataList时,StoreListData都会自动处于可用状态:
class DataList { public List<StoreList> StoreListData { get; set; } = new List<StoreList>(); }
方案2:实例化DataList后手动初始化列表
如果不想修改DataList类的定义,就在创建storeList对象后,立即为StoreListData赋值一个新的空列表:
var storeList = new DataList(); storeList.StoreListData = new List<StoreList>(); // 新增这行代码初始化列表 foreach (var stores in liststoreIds) { storeList.StoreListData.Add(new StoreList { Code = stores.code, Name = stores.name, StoreId = stores.store_id }); }
额外小提示:如果liststoreIds也存在返回null的可能,建议在foreach前加个判空判断(比如if(liststoreIds != null)),可以避免更多潜在的空引用问题。
内容的提问来源于stack exchange,提问作者DaniKR
相关产品推荐
相关产品推荐

