【发布时间】:2021-08-03 05:17:00
【问题描述】:
我希望用户通过程序界面的复制和粘贴来添加代理地址,当按下按钮时,我想将它们复制到arraylist并继续arraylist,但是当行数很高时,它需要相当长的时间。当我添加 10,000 个代理并尝试按钮时,等待一段时间后出现错误。如何快速将richtextbox中的项目添加到arraylist列表中?
我的代码:
ArrayList plist = new ArrayList();
if (richTextBox1.Lines.Length > 0 && checkBox1.Checked == true)
{
for (int i = 0; i < richTextBox1.Lines.Length; i++)
{
if (richTextBox1.Lines[i].ToString() != "")
{
plist.Add(richTextBox1.Lines[i].ToString());
}
}
}
【问题讨论】:
-
可能不是您的主要问题,但请注意
ArrayList已弃用,应替换为List<T>。 -
When I added 10,000 proxies and tried the button, it gave an error after waiting for a while那是什么错误?您在这里询问了一些事情,如果您无法弄清楚导致错误的原因,那么将项目添加到集合中的速度并不重要。 -
旁注,您可以一次添加所有项目,而不是单独添加。我这样说是因为
ArrayList和List<T>在调用Add时(在某些情况下)的大小会加倍。与其每次都使用Add那样增加大小,不如使用AddRange并执行一次。一个简单的基准测试也有助于确认性能。 -
合适吗?
plist.AddRange(richTextBox1.Lines.Where(line => line != "").ToArray());或line.Trim() != "" -
@OlivierRogier 它对我有用。谢谢
标签: c# loops arraylist refactoring richtextbox