C#中如何向二维数组添加元素并解决空引用异常问题
问题根因
你使用的是C#的交错数组(数组的数组),string[][] pln_arr = new string[20][]; 仅完成了外层数组的初始化,外层数组的20个存储位默认值均为null,没有为内层长度为3的字符串数组分配内存空间,此时直接访问pln_arr[cnt][0]就会触发空引用异常。
修复代码
在每次向内层数组写入数据前,先初始化当前索引位对应长度为3的内层数组即可,满足j.Id存放在单元首位的要求:
string[][] pln_arr = new string[20][]; public int cnt = 0; foreach (var j in sss) { // 初始化当前位置长度为3的内层数组 pln_arr[cnt] = new string[3]; // 将j.Id存入单元首位 pln_arr[cnt][0] = j.Id.ToString(); // 剩余两个索引位pln_arr[cnt][1]、pln_arr[cnt][2]可按业务需求存入对应字段 MessageBox.Show(pln_arr[cnt][0]); cnt++; }
优化提示
- 如果无法提前确认
sss的元素总量,不要用固定长度的交错数组,改用List<string[]>会更灵活,不会出现数组越界问题。 - 赋值时如果
j.Id不是字符串类型,必须调用.ToString()转成字符串后再存入,否则会出现类型不匹配的编译错误。
内容的提问来源于stack exchange,提问作者occosi
相关产品推荐
相关产品推荐

