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

C# ArrayList索引越界问题求助:循环遍历代码报错排查

搞定ArrayList索引超出范围的问题

嘿,我看看你的问题——这段循环代码跑起来报索引超出范围,对吧?先看你贴的代码:

for (int a = 0; a < isim.Count; a++) { 
    Console.WriteLine(nu[a] + "\t" + isim[a] + "\t" + mail[a]); 
}

这个错误的核心原因很明确:nu、isim、mail这三个集合的元素数量不一样。你现在循环的次数是跟着isim.Count走的,但如果nu或者mail的元素比isim少,当循环变量a跑到比它们的长度还大的时候,自然就找不到对应的索引了,直接触发报错。

给你几个解决思路:

  • 先查清楚三个集合的长度差在哪:在循环前加几行打印代码,看看各自的元素数量:
    Console.WriteLine($"isim有{isim.Count}个元素");
    Console.WriteLine($"nu有{nu.Count}个元素");
    Console.WriteLine($"mail有{mail.Count}个元素");
    
  • 要是业务上允许只输出三个集合都有的元素,那循环上限就取三个里面最小的那个长度:
    int maxValidIndex = Math.Min(Math.Min(isim.Count, nu.Count), mail.Count);
    for (int a = 0; a < maxValidIndex; a++) { 
        Console.WriteLine($"{nu[a]}\t{isim[a]}\t{mail[a]}"); 
    }
    
  • 要是要求三个集合必须元素数量完全一致,那你得去检查填充数据的逻辑——是不是往nu或者mail里加元素的时候漏加了,或者某些场景下没同步添加,从根源上把三个集合的元素数量对齐。

另外提个小建议:在C#里尽量用泛型集合(比如List<string>或者对应类型的List<T>)代替ArrayList,泛型不仅类型安全,还能避免很多不必要的类型转换问题,代码也更好维护~

内容的提问来源于stack exchange,提问作者Mehmet 艦en

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:15:16