Ich habe begonnen, StringBuilder
anstelle von geraden Verkettung zu verwenden, aber es scheint, als ob es eine entscheidende Methode fehlt. So setzte ich es selbst, als Erweiterung:Unterdrücke ich die Effizienz von StringBuilder?
public void Append(this StringBuilder stringBuilder, params string[] args)
{
foreach (string arg in args)
stringBuilder.Append(arg);
}
Damit wird das folgende Chaos:
StringBuilder sb = new StringBuilder();
...
sb.Append(SettingNode);
sb.Append(KeyAttribute);
sb.Append(setting.Name);
In diesem:
sb.Append(SettingNode, KeyAttribute, setting.Name);
ich sb.AppendFormat("{0}{1}{2}",...
verwenden könnte, aber dies scheint auch weniger bevorzugt und noch schwerer zu lesen. Ist meine Erweiterung eine gute Methode, oder untergräbt sie irgendwie die Vorteile von StringBuilder
? Ich versuche nicht, irgendetwas vorzeitig zu optimieren, da meine Methode mehr auf Lesbarkeit als auf Geschwindigkeit ausgerichtet ist, aber ich würde auch gerne wissen, dass ich mich nicht selbst in den Fuß schieße.
Sollte darauf hinweisen, dass, wenn Sie bereits einen StringBuilder haben, würde gerade String Concat schneller sein. z.B. String s = "orig" + SettingNode + KeyAttribute + setting.Name; – hemp
@Hemp: Nur leicht. Es wird den Aufruf von Append los. Alles andere sollte gleich sein. Und das setzt voraus, dass es keine anderen Anhänge gibt. –
@Hemp: Was ist mit String s = String.Concat ("orig", SettingNode, KeyAttribute, setting.Name), ich denke, das wäre schneller als mit "+" für concat. –