You need to enable JavaScript to run this app. C#中这段for循环代码为什么会抛出索引超出范围异常?
优惠活动
大模型
产品
解决方案
定价
更多

C#中这段for循环代码为什么会抛出索引超出范围异常?

问题原因

这段代码抛出索引越界异常的核心原因是对List<T>的用法错误,和inputStringArray的索引范围无关。

  • 你通过new List<int>()初始化的空List,实际元素个数(Count属性)为0,内部没有任何已存在的元素。List<T>的索引器只能用于访问或修改已经被添加到集合中的元素,不能直接给不存在的索引位置赋值。
  • 循环中执行listOfNumbers[i]时,i从0开始取值,但此时List中没有任何元素,直接触发ArgumentOutOfRangeException异常。
修复方案

方案1:使用Add方法追加元素(最常用)

List默认通过Add方法往集合末尾追加元素,修改循环逻辑即可:

for (int i = 0; i < inputStringArray.Length; i++)
{
    listOfNumbers.Add(Convert.ToInt32(inputStringArray[i]));
}

也可以直接用LINQ简化写法:

var listOfNumbers = inputStringArray.Select(Convert.ToInt32).ToList();

方案2:初始化时填充默认值后用索引赋值

如果确实需要用索引赋值的写法,可以在初始化List时就指定长度并填充默认值,保证List的元素个数和inputStringArray一致:

var listOfNumbers = new List<int>(new int[inputStringArray.Length]);

for (int i = 0; i < inputStringArray.Length; i++)
{
    listOfNumbers[i] = Convert.ToInt32(inputStringArray[i]);
}
额外注意事项

当前代码没有做输入合法性校验,如果用户输入的内容不是合法整数,Convert.ToInt32会抛出格式异常,建议使用int.TryParse做校验,避免程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 02:42:01