此代码给出了一个错误,指出索引超出了数组的范围,但如果我使用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);
// ...
}
发生了什么事?如何修复它以便它与ListBox一起使用?
答案 0 :(得分:2)
您的代码不断添加到gradelistbox.items
,从而增加了其数量。另一方面,arr
的大小保持不变。因此,只要循环到达gradelistbox.items
的原始边界,就会得到索引超出范围的异常。
您可以通过将数组arr
替换为可以动态调整大小的容器(例如List<string>
)来解决此问题。这样,您每次向arr
添加项目时都可以将项目添加到gradelistbox.items
,并保持其长度不变。
答案 1 :(得分:0)