正如中明确提到的MSDN 文档的备注部分
AppendText 方法使用户能够将文本附加到文本控件的内容,而无需使用文本串联,这在需要许多串联时可以产生更好的性能。
你的问题,
这两种方法有什么区别?
我们都知道如何TextBox.Text += something;
会起作用,即每次创建并附加一个新字符串,但是如何AppendText
有效我找不到任何代码片段是否在内部使用StringBuilder
或者是其他东西。
其中一个比另一个更有效率吗?
我认为上述问题的回答要视情况而定,(基于测试用例观察)
if Multiline
属性设置为false
then 连接 (+=)产生更好的结果,但另一方面Multiline
属性设置为true
then AppendText
产生更好的性能。
EDIT读完后罗林的评论我制作了一个自定义的 win-form 解决方案,其中有一个简单的textbox
我在其中附加了一个简单的字符串hello
10000次使用简单的for-loop
private void btnAppendText_Click(object sender, EventArgs e)
{
txtText.Text = string.Empty;
DateTime startTime = DateTime.Now;
for (int i = 0; i < 10000; i++)
{
txtText.AppendText(s);
}
DateTime endTime = DateTime.Now;
txtTime.Text = (endTime.Ticks - startTime.Ticks).ToString();
}
private void btnConcante_Click(object sender, EventArgs e)
{
txtText.Text = string.Empty;
DateTime startTime = DateTime.Now;
for (int i = 0; i < 5000; i++)
{
txtText.Text += s;
}
DateTime endTime = DateTime.Now;
txtTime.Text = (endTime.Ticks - startTime.Ticks).ToString();
}
Output非常令人惊讶,
测试 1:多行属性为 true我必须将文本连接的迭代次数减少到一半,即 5000 次,因为它需要很长时间。
btnAppendText_Click
输出开txtTime
was 37222129
10000 次迭代几乎需要 3-4 秒
btnConcante_Click
输出开txtTime
was 14449906487
仅 5000 次迭代就超过 25 分钟。
从上面的结果可以很清楚地看出,AppendText
更快、更高效(当Multiline
is true
) than Concatenation
测试 2:多行属性为 false
btnConcante_Click
输出开txtTime
was 39862280
10000 次迭代几乎需要 3-4 秒
btnAppendText_Click
输出开txtTime
was 1043279672
10000 次迭代大约需要 2-3 分钟
从上面的结果可以很清楚地看出,串联更快、更高效(当Multiline
is false
) than AppendText