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);
// ...
}
怎么回事?我如何修复它,使其与列表框一起工作?
您的代码不断添加到gradelistbox.items
从而增加其计数。另一方面,arr
的大小保持不变。因此,一旦循环到达gradelistbox.items
的原始边界,就会出现索引越界异常。
您可以通过将数组arr
替换为可以动态调整大小的容器(例如List<string>
)来解决此问题。这将允许您在每次向gradelistbox.items
添加项时向arr
添加项,并保持它们的长度相同。
尝试使用AddRange方法在列表中添加值
更多细节请阅读下面的链接
为什么AddRange比使用foreach循环更快?
谢谢-Nimesh