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

C#字符串数组出现System.IndexOutOfRangeException未处理异常求助

解决System.IndexOutOfRangeException异常问题

异常原因

你定义的user和pass是固定长度数组,初始仅包含1个元素(索引为0)。代码中howmanyusers++后值为1,此时尝试访问user[1]和pass[1],但数组的有效索引范围是0到0(长度为1的数组索引从0开始),超出范围就会抛出IndexOutOfRangeException。

解决方案

方案1:使用List<string>(推荐)

固定长度数组不适合需要动态添加元素的场景,改用List<string>可以自动扩容,直接添加元素无需手动管理索引:

// 初始化List,包含初始元素"a"
List<string> user = new List<string> { "a" };
List<string> pass = new List<string> { "a" };
string TBTOS;

// 添加新用户名
TBTOS = username.Text;
user.Add(TBTOS);

// 添加新密码
TBTOS = password.Text;
pass.Add(TBTOS);

方案2:手动扩容数组(不推荐,仅作了解)

如果坚持使用数组,需要创建新数组并复制原有元素来实现扩容:

string[] user = { "a" }, pass = { "a" };
string TBTOS;

// 处理用户名数组
TBTOS = username.Text;
string[] newUserArray = new string[user.Length + 1];
Array.Copy(user, newUserArray, user.Length);
newUserArray[user.Length] = TBTOS;
user = newUserArray;

// 处理密码数组
TBTOS = password.Text;
string[] newPassArray = new string[pass.Length + 1];
Array.Copy(pass, newPassArray, pass.Length);
newPassArray[pass.Length] = TBTOS;
pass = newPassArray;

额外说明

原代码中的howmanyusers变量完全可以去掉——用List的Add方法无需关注索引;用数组的话,原数组的Length属性就是新元素的目标索引位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:31:04