c#索引超出数组的范围

本文关键字:范围 数组 索引 | 更新日期: 2023-09-27 18:15:24

这段代码给了我一个错误,说索引超出了数组的边界,但如果我使用MessageBox.Show()而不是ListBox.Items.Add(),错误就不会发生。

string[] arr = new string[gradeListbox.Items.Count];
for (int i = 0; i < gradeListbox.Items.Count; i++)
{
    arr[i] = gradeListbox.Items[i].ToString();
    Regex reg = new Regex(@"[0-9'.]+");
    grade = double.Parse(reg.Match(arr[i].ToString()).Value);
    studentName = Regex.Replace(arr[i], @"['d-]", string.Empty);
    gradelistbox.Items.Add(grade + studentName);
    // ...
}

怎么回事?我如何修复它,使其与列表框一起工作?

c#索引超出数组的范围

您的代码不断添加到gradelistbox.items从而增加其计数。另一方面,arr的大小保持不变。因此,一旦循环到达gradelistbox.items的原始边界,就会出现索引越界异常。

您可以通过将数组arr替换为可以动态调整大小的容器(例如List<string>)来解决此问题。这将允许您在每次向gradelistbox.items添加项时向arr添加项,并保持它们的长度相同。

尝试使用AddRange方法在列表中添加值

更多细节请阅读下面的链接

为什么AddRange比使用foreach循环更快?

谢谢-Nimesh