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
相关产品推荐
相关产品推荐

