C# C代码运行速度非常慢

C# C代码运行速度非常慢,c#,c#-4.0,C#,C# 4.0,Hy,我有一个int[]x,有10000个索引,我用这样的代码把换行符中的每个值都放到文本框中,但是我的代码至少需要几分钟来填充文本框,有没有更快捷的方法 for ( int x = 0; X < 10000; x++) { textBox1.Text += randomNumber[x] + Environment.NewLine; } for(int x=0;x初始容量。@ MarcinJuraszek,如果你不先把它设置到合理的上限,这真的有意义吗?看起来,由于您仍然需要将

Hy,我有一个int[]x,有10000个索引,我用这样的代码把换行符中的每个值都放到文本框中,但是我的代码至少需要几分钟来填充文本框,有没有更快捷的方法

for ( int x = 0; X < 10000; x++)
{
    textBox1.Text += randomNumber[x] + Environment.NewLine;
}
for(int x=0;x<10000;x++)
{
textBox1.Text+=randomNumber[x]+Environment.NewLine;
}

首先构建字符串,然后将其值放入文本框中(而不是将文本追加到文本框10000次)。

是的,使用字符串生成器执行以下操作:

StringBuilder builder = new StringBuilder(10000); 
for (int x = 0; x < 10000; x++)
{
    builder.AppendLine(randomNumber[x]);
}
textBox1.Text = builder.ToString();
StringBuilder=新的StringBuilder(10000);
对于(int x=0;x<10000;x++)
{
builder.AppendLine(随机数[x]);
}
textBox1.Text=builder.ToString();

否则,您就是在“吐出字符串”,这是新程序员的常见陷阱。Joel Spolsky的一篇博文,描述了字符串和不变性的常见缺陷。

不清楚
randomNumber
集合大小是否为
10000
,但如果是,您可以使用以下方法:


无论如何,它将使用<代码> StringBuilder < /代码>,但更好的是阅读。

这是一个标准的例子,你应该考虑设置<代码> StringBuilder < /Cord>初始容量。@ MarcinJuraszek,如果你不先把它设置到合理的上限,这真的有意义吗?看起来,由于您仍然需要将几倍多的字节复制到最终大小缓冲区中,以及在初始容量和目标大小之间进行的所有大小调整,这几次初始大小调整可能会相形见绌。@MarcinJuraszek:在.NET4.0中,
StringBuilder
实现为一个“块”列表,而不是以前版本中的单个字符列表。因此,设置初始容量并不能提供与以前版本相同的好处。有关详细信息,请参见。使用
builder.AppendLine()
而不是
builder.Append(string+Environment.NewLine)
@JimMischel非常有趣。谢谢你的链接!
textBox1.Text = string.Join(Environment.NewLine, randomNumber);