[英]how to speed up foreach results
我正在制作一個 Windows 窗體應用程序,我想生成從 0 到 99999 的數字。我使用以下代碼打印這些數字:
private void button1_Click(object sender, EventArgs e)
{
int[] arr = Enumerable.Range(0, 99999).ToArray();
var sb = new StringBuilder();
foreach (int a in arr)
{
sb.AppendLine(a.ToString("000000"));
// textBox3.Text += a.ToString("000000")+Environment.NewLine;
textBox3.Text = sb.ToString();
}
}
但是打印所有數字需要很多時間。
有沒有辦法加快這個速度?
您在每次迭代中設置TextBox
的文本。 所以文本框被重繪了 100000 次。 當然是慢了。
將文本的設置移到循環之外:
foreach (int a in arr)
{
sb.AppendLine(a.ToString("000000"));
}
textBox3.Text = sb.ToString();
因此,您僅在完成字符串組合后才設置文本,並且文本框僅重繪一次。
可能是這個幫助
private void button1_Click(object sender, EventArgs e)
{
int[] arr = Enumerable.Range(0, 99999).ToArray();
var sb = new StringBuilder();
foreach (int a in arr)
{
sb.AppendLine(a.ToString("000000"));
// textBox3.Text += a.ToString("000000")+Environment.NewLine;
}
textBox3.Text = sb.ToString();
}
這個方法怎么樣。
private void button1_Click(object sender, EventArgs e)
{
textBox3.Text = string.Join(Environment.NewLine, Enumerable.Range(0,99999).Select(x => x.ToString().PadLeft(6, '0')));
}
你試過這個嗎?
foreach (int a in arr)
{
sb.AppendLine(a.ToString("000000"));
}
textBox3.Text = sb.ToString();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.