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

C# 2D List索引越界错误:formula2MatrixResult访问异常求助

C# 二维List索引越界报错排查方案

1 校验Formula2返回矩阵规格

拿到Formula2返回值后,先执行以下代码确认行列数是否符合5行20列的设计要求:

var formula2MatrixResult = Formula2();
// 输出总行数
Console.WriteLine($"矩阵总行数:{formula2MatrixResult.Count}");
// 逐行输出列数
for (int rowIndex = 0; rowIndex < formula2MatrixResult.Count; rowIndex++)
{
    Console.WriteLine($"第{rowIndex+1}行列数:{formula2MatrixResult[rowIndex].Count}");
}

如果输出不符合5行、每行20列的要求,即可定位是Formula2实现问题,常见错误点:

  • 初始化外层List时只添加了少于5个的子List
  • 某一行子List添加元素时不足20个就终止了逻辑
  • 子List初始化逻辑重复执行,覆盖了之前已添加的元素

2 矩阵规格正确时排查Formula3索引逻辑

报错代码if (formula2MatrixResult[i][j] < 0)触发越界,本质是i超出行索引范围,或j超出当前行的列索引范围,需检查以下逻辑:

  • 遍历i的循环上限是否使用formula2MatrixResult.Count,禁止硬编码为5,避免后续矩阵行数调整后漏改循环条件
  • 遍历j的循环上限是否使用formula2MatrixResult[i].Count,禁止硬编码为20,避免锯齿数组场景下某行长度不足触发越界
  • 检查i、j是否在遍历过程中被手动修改(比如额外做了+1、-1运算),修改后未做范围校验就直接访问矩阵元素

3 注意事项

C#中的List<List<T>>属于锯齿数组结构,每一行的长度可以独立设置,不会强制所有行长度一致,即使前4行都是20列,也可能出现第5行长度不足的情况,所有访问索引的位置都建议提前做范围校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:03