Warum verwechseln die Leute Strings immer wieder mit String-Literalen? Die akzeptierte Antwort ist eine großartige Antwort auf eine andere Frage. nicht zu diesem.
Ich weiß, dass dies ein altes Thema ist, aber ich bin mit möglicherweise der gleichen Frage wie das OP hierher gekommen, und es ist frustrierend zu sehen, wie die Leute es immer wieder falsch lesen. Oder vielleicht verstehe ich es falsch, ich weiß es nicht.
Grob gesagt ist eine Zeichenfolge ein Bereich des Computerspeichers, der während der Ausführung eines Programms eine Folge von Bytes enthält, die Textzeichen zugeordnet werden können. Ein Zeichenfolgenliteral hingegen ist ein noch nicht kompilierter Quellcode, der den Wert darstellt, der zum späteren Initialisieren einer Zeichenfolge während der Ausführung des Programms verwendet wird, in dem sie angezeigt wird.
In C # ist die Anweisung ...
string query = "SELECT foo, bar"
+ " FROM table"
+ " WHERE id = 42";
... erzeugt keinen dreizeiligen String, sondern einen Einzeiler; die Verkettung von drei Zeichenfolgen (jede aus einem anderen Literal initialisiert), von denen keine einen Modifikator für neue Zeilen enthält.
Was das OP zu fragen scheint - zumindest was ich mit diesen Worten fragen würde - ist nicht, wie man in die kompilierte Zeichenfolge Zeilenumbrüche einführt, die die im Quellcode gefundenen nachahmen, sondern wie man aus Gründen der Klarheit lange aufbricht , einzelne Textzeile im Quellcode ohne Unterbrechungen in der kompilierten Zeichenfolge. Und ohne eine längere Ausführungszeit zu benötigen, müssen Sie die mehreren Teilzeichenfolgen aus dem Quellcode zusammenfügen. Wie die nachfolgenden Backslashes in einem mehrzeiligen String-Literal in Javascript oder C ++.
Wenn ich die Verwendung von wörtlichen Zeichenfolgen, Neverminds StringBuilder
, String.Join
S oder sogar verschachtelten Funktionen mit Zeichenfolgenumkehrungen vorschlage und was nicht, denke ich, dass die Leute die Frage nicht wirklich verstehen. Oder vielleicht verstehe ich es nicht.
Soweit ich weiß, ist C # nicht (zumindest in der Altsteinzeit Version , die ich immer noch bin mit , aus den letzten zehn Jahren) eine Funktion , um sauber produzieren mehrzeiligen String - Literale , die während der Kompilierung aufgelöst werden können , anstatt die Ausführung.
Vielleicht unterstützen aktuelle Versionen dies, aber ich dachte, ich würde den Unterschied teilen, den ich zwischen Strings und String-Literalen wahrnehme.
AKTUALISIEREN:
(Aus dem Kommentar von MeowCat2012) Sie können. Der "+" - Ansatz von OP ist der beste. Laut Spezifikation ist die Optimierung garantiert: http://stackoverflow.com/a/288802/9399618