You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

空数组引发System.NullReferenceException异常问题排查

解决System.NullReferenceException异常问题

问题根源

你声明的List<Num>[] num数组仅分配了可容纳45个元素的存储空间,但数组内每个位置的默认值都是null——相当于你只造了装列表的空容器,容器里并没有真正的List<Num>实例。直接调用num[0].Add(...)时,本质是在调用一个null对象的方法,自然触发空引用异常。

至于IDE能识别num[5][3].StatG,是因为IDE做的是静态类型检查:它通过代码定义知道num是存储List<Num>的数组、List<Num>的元素是Num类型、Num包含StatG字段,但不会校验运行时该位置是否真的存在实例。

解决方案

1. 一次性初始化数组所有元素

创建数组后,通过循环为每个索引位置生成List<Num>实例:

// 先创建数组框架
List<Num>[] num = new List<Num>[45];
// 遍历数组,为每个位置初始化空列表
for (int i = 0; i < num.Length; i++)
{
    num[i] = new List<Num>();
}

完成后再调用num[0].Add(new Num())即可正常执行。

2. 按需初始化单个元素

如果不需要一次性初始化全部45个列表,可在使用目标索引前先检查并初始化:

// 检查num[0]是否未实例化,是则创建新列表
if (num[0] == null)
{
    num[0] = new List<Num>();
}
// 现在可安全添加元素
num[0].Add(new Num());

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 08:42:44