Wie es deutlich in Remarks section of MSDN Documentation
Die AppendText Verfahren ermöglicht es dem Benutzer erwähnte Text den Inhalt einer Textsteuerung anzuhängen, ohne Text Verkettung unter Verwendung , die zu einer besseren Leistung führen können, wenn viele Verkettungen erforderlich sind.
Ihre Frage,
was ist der Unterschied zwischen diesen beiden Methoden?
Wir alle wissen, wie TextBox.Text += something;
funktioniert das heißt das Erstellen und eine neue Zeichenfolge jedes Mal anhängt, aber wie AppendText
Werke Ich konnte keine Code-Schnipsel, ob es intern verwendet StringBuilder
oder etwas anderes.
Ist einer effizienter als der andere?
Ich denke Antwort auf obige Frage nach der Situation abhängen, (Basierend auf Testfallbeobachtung)
wenn Multiline
Eigenschaft auf false
dann gesetzt Verkettungs (+ =) ergibt bessere Ergebnisse, aber auf der anderen Seite Eigenschaft wird auf festgelegt dann AppendText
ergibt weit bessere Leistung.
EDIT Nach den comment from Rawling Lesen habe ich eine benutzerdefinierte Win-Form Lösung, in der ich in dem ein einfaches textbox
hatte ich einen einfachen String hello
mal angehängt ein einfaches 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();
}
mit
Ausgabe waren sehr überraschend,
TEST 1: Multiline-Eigenschaft ist wahr Ich hatte die Iteration auf die Hälfte, dh 5000 für Text Verkettung zu reduzieren, wie es war sehr lange Zeit
btnAppendText_Click
Ausgabe auf txtTime
war 37222129
fast 3-4 Sekunden für 10000 Iteration
btnConcante_Click
Ausgabe auf txtTime
sprechen war 14449906487
mehr als 25 Minuten für nur 5000 Iteration
Vom ab ove Ergebnis ist es wirklich klar, dass AppendText
ist viel schneller und effizienter (wenn Multiline
True
ist), dann Concatenation
TEST 2: Multiline-Eigenschaft ist falsch
btnConcante_Click
Ausgabe auf txtTime
war 39862280
fast 3-4 Sekunden für 10000 Iteration
btnAppendText_Click
Ausgabe auf txtTime
war 1043279672
fast 2-3 Minuten für 10000 Iteration
Aus dem obigen Ergebnis ist es wirklich klar, dass Verkettungs schneller und effizienter ist (wenn Multiline
ist false
) dann AppendText
Betrachten Sie es in einem Reflektor, fügt AppendText einfach über die Berechnung der Endposition dann über .SelectedText –
Dokumentation hinzu: http://msdn.microsoft.com/library/system.windows.forms.textboxbase.appendtext(v= vs.110) .aspx –