14 Stimmen

C#: lesbarste String-Verkettung. beste Praxis

重複の可能性あり。
Wie sollte ich Zeichenketten verketten?

Es gibt mehrere Möglichkeiten, Zeichenketten in alltäglichen Aufgaben zu verketten, wenn die Leistung ist nicht wichtig .

  • result = a + ":" + b
  • result = string.Concat(a, ":", c)
  • result = string.Format("{0}:{1}", a, b);
  • StringBuilder approach
  • ... ?

was bevorzugen Sie und warum, wenn die Effizienz keine Rolle spielt, aber Sie den Code für Ihren Geschmack möglichst lesbar halten wollen?

9voto

Steven Punkte 157957

Das hängt von der Verwendung ab. Wenn Sie nur zwei Zeichenketten zusammenfügen wollen, können Sie mit a + b ist einfach viel besser lesbar als string.Format("{0}{1}", a, b) . Allerdings wird es immer komplexer, ich bevorzuge die Verwendung von string.Format . Vergleichen Sie dies:

string x = string.Format("-{0}- ({1})", a, b);

gegen:

string x = "-" + a + "- (" + b + ")";

Ich denke, dass es in den meisten Fällen sehr einfach ist, die am besten lesbare Methode zu erkennen. In den Fällen, in denen es strittig ist, welche Variante besser lesbar ist, wählen Sie einfach eine, denn Ihr Chef zahlt nicht für diese sinnlosen Diskussionen ;-)

8voto

Chris Diver Punkte 18942

string.Format für mich, aber in der Praxis verwende ich das, was für den Zweck geeignet ist, unter Berücksichtigung von Leistung und Lesbarkeit.

Wenn es zwei Variablen wären, würde ich sie verwenden.

string.Concat(str1, str2);

Wenn sie eine Konstante oder etwas, das eine Formatierung erfordert, enthält.

string.Format("{0} + {1} = {2}", x, y, x + y);

Oder für so etwas wie eine SQL-Abfrage

string SqlQuery = "SELECT col1, col2, col3, col4" + 
                  "FROM table t " + 
                  "WHERE col1 = 1";

Und String Builder, wenn Leistung zählt.

2voto

herzmeister Punkte 10827

String.Format(...) am langsamsten ist.

Für einfache Verkettungen, die nicht in einer Schleife stattfinden, verwenden Sie String.Concat(...) oder die + Operator, die unter der Haube das Gleiche bedeuten, afaik. Was mehr lesbar ist, ist sehr subjektiv.

Mit einer StringBuilder für einfache Verkettungen ist auch für einfache Verkettungen übertrieben und hat höchstwahrscheinlich zu viel Overhead. Ich würde es nur in einer Schleife verwenden.

2voto

strager Punkte 86191

Für etwas wie dieses (das vermutlich an die Benutzeroberfläche gesendet wird) würde ich auf jeden Fall Folgendes bevorzugen String.Format . Damit kann die Zeichenkette leicht internationalisiert werden; Sie können nach Aufrufen von String.Format und ersetzen Sie sie durch Ihr Übersetzungsformat.

2voto

Ben Schwehn Punkte 4459

Meine persönliche Vorliebe ist:

Ich finde den +-Ansatz am lesbarsten und verwende Format() oder einen StringBuilder nur, wenn es dafür einen guten Grund gibt (i18n, Leistung usw.). Ich verwende (fast) nie Concat.

Ich glaube, ich finde den +-Ansatz einfacher zu lesen als Format(), einfach weil ich nicht bis zum Ende springen muss, um zu sehen, welche Variablen in die {}-Platzhalter eingesetzt werden. Und wenn die Platzhalter nicht in numerischer Reihenfolge sind, wird es imo noch schwieriger zu lesen.

Aber ich denke, bei größeren Projekten ist es sinnvoll, die Verwendung von Format durch einen Styleguide zu erzwingen, für den Fall, dass der Code später in einem Projekt, das i18n erfordert, (wieder-)verwendet wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X