Wann sollte ich String.Format oder String.Concat anstelle des Verkettungsoperators verwenden?

8

In C # ist es möglich, Strings auf verschiedene Arten zu verketten:

Verwenden des Verkettungsoperators:

%Vor%

Verwenden von String.Format :

%Vor%

Verwenden von String.Concat :

%Vor%

Was sind die Vor- und Nachteile der einzelnen Methoden? Wann sollte ich einen über den anderen bevorzugen?

Die Frage entsteht aufgrund einer Debatte zwischen Entwicklern. One nie verwendet String.Format für die Verkettung - er argumentiert, dass dies zum Formatieren von Strings, nicht zur Verkettung, und das ist immer unlesbar, weil die Elemente in der Zeichenfolge in der falschen Reihenfolge ausgedrückt werden. Das andere häufig verwendet String.Format für die Verkettung, weil er denkt, dass es den Code leichter lesbar macht, besonders wenn mehrere Sätze von Zitaten involviert sind. Beide Entwickler verwenden auch den Verkettungsoperator und String.Builder.

    
Kramii 12.01.2011, 11:45
quelle

7 Antworten

16

Was die Geschwindigkeit betrifft, ist es fast immer egal .

%Vor%     
Jonas Elfström 12.01.2011, 11:51
quelle
3

Normalerweise benutze ich string.Format, wenn ich mehr als zwei oder drei Werte verkettet habe, da es einfacher zu sehen ist, wie das Endergebnis aussehen würde. Die Verkettung der Zeichenfolgen ist langsam, da Sie für jede Operation ein neues Zeichenfolgenobjekt erstellen müssen.

Wenn Sie mehr als 5 Zeichenfolgen verbinden möchten, verwenden Sie StringBuilder, da dies viel schneller wäre.

    
Miki Watts 12.01.2011 11:52
quelle
3

Ich gehe normalerweise auf Lesbarkeit und tendiere dazu, Format zu verwenden. Der meiste Code wird einmal geschrieben und mehrmals gelesen, so dass der Leser schnell verstehen kann, was gesagt wurde, ist wichtiger (für mich).

    
Sean 12.01.2011 11:53
quelle
3

Es ist seltsam, aber String.Format verwendet intern StringBuilder.AppendFormat (). Beispielsweise sieht String.Format-Code folgendermaßen aus:

%Vor%

Mehr dazu finden Sie hier . Also, warum haben wir hier nicht über StringBuilder.AppendFormat () erwähnt!

In Bezug auf den Hauptpunkt der Frage:

Der Schlüssel ist, das beste Werkzeug für den Job auszuwählen. Was meine ich? Betrachten Sie diese ehrfürchtigen Worte der Weisheit:

%Vor%     
apros 12.01.2011 12:07
quelle
2

Leistungsaspekte sind häufig der Grund für diese Entscheidung. Siehe diesen Artikel von Ayende.

    
StuartLC 12.01.2011 11:51
quelle
0

Es wird nicht empfohlen, Zeichenketten im Code zu speichern. Wenn Sie also entscheiden, Ihre Zeichenketten aus dem Code zu extrahieren, dann wäre es mit String.Format einfacher,

zu machen     
Denis Palnitsky 12.01.2011 11:51
quelle
0

Dies ist ein Artikel zur Speichernutzung für verschiedene Verkettungsmethoden und Compileroptimierungen, die zum Erzeugen der IL verwendet werden. Methoden zur Verkettung und Optimierung

    
Wafi Farreedun 26.04.2012 21:23
quelle

Tags und Links