C#新手开发遇索引超出数组界限错误,求排查代码问题
错误根因
报错的核心原因是随机索引的生成逻辑不符合数组的合法索引规则:
- 无参数的
Random.Next()方法返回的随机数范围为[0, 2147483647),而你通过question1.Text.Split()得到的Names数组长度远小于这个最大值,生成的索引大概率超出数组的合法索引范围(数组的合法索引区间为[0, 数组长度 - 1]),因此触发数组越界报错。
修复代码
替换你报错位置的相关代码即可:
var random = new Random(); var Names = question1.Text.Split(); // 增加数组非空判断,避免空数组访问报错 if (Names.Length == 0) { return; } // 调用带参数的Next方法,传入数组长度作为上限,保证生成的索引合法 int index = random.Next(Names.Length); string randomName = Names[index];
其他潜在问题修复
你的代码还有两处可优化的异常点:
- 不要在
TextBox_TextChanged事件中重复实例化ChromeDriver,会生成大量冗余的浏览器进程,建议将ChromeDriver实例改为类全局变量,仅初始化一次 - 导航链接需要补全协议头,将
string url = "google.com";修改为string url = "https://google.com";否则会导航失败
内容的提问来源于stack exchange,提问作者golden leo
相关产品推荐
相关产品推荐

