c# – 随着时间的推移,添加到列表变得非常慢
我正在解析一个大约有1000行的html表.我正在从一个< td>中添加~10个字符串.在每一行到列表< string>宾语.前200个左右的循环非常快,但随着时间的推移变得越来越慢.
这是我正在使用的代码: List<string> myList = new List<string>(); int maxRows = numRows; for (int i = 1; i < maxRows; i++) { TableRow newTable = myTable.TableRows[i]; string coll = string.Format("{0},{1},{2},{3},{4}",newTable.TableCells[0].Text,newTable.TableCells[1].Text,newTable.TableCells[2].Text,newTable.TableCells[3].Text,newTable.TableCells[4].Text); myList.Add(coll); label1.Text = i.ToString(); } 我应该使用数组吗? 编辑:我将上面的代码放在一个新的方法上,该方法在一个新的线程上运行,然后使用以下代码更新我的标签控件: label1.Invoke((MethodInvoker)delegate { label1.Text = i.ToString(); }); 程序以一致的速度运行,不会阻止UI. 解决方法
如果您大致知道集合中的范围(项目数),最好使用数组.
以下是AFAIK的工作原理,默认情况下以16个元素开头, 谢谢@Dypplvar list = new List< int>(1000);这也是一个优雅的选择,因为@Dyppl认为它是两个世界中最好的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |