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

