C# 6 bringt Support-Compiler für interpolierte Stringliterale mit Syntax:mehrzeilige C# interpoliert Stringliteral
var person = new { Name = "Bob" };
string s = $"Hello, {person.Name}.";
Dies ist ideal für kurze Strings, aber wenn man eine längere Schnur produzieren will, muss es auf einem einzelnen angegeben werden Linie?
mit anderen Arten von Zeichenketten können Sie:
var multi1 = string.Format(@"Height: {0}
Width: {1}
Background: {2}",
height,
width,
background);
Oder:
var multi2 = string.Format(
"Height: {1}{0}" +
"Width: {2}{0}" +
"Background: {3}",
Environment.NewLine,
height,
width,
background);
ich keine Möglichkeit, dies zu erreichen, mit String-Interpolation, ohne dass es eine eine Zeile finden:
Ich weiß, dass Sie in diesem Fall \r\n
anstelle vonverwenden könnten(weniger portabel), oder ziehen Sie es zu einem lokalen, aber es wird Fälle geben, in denen Sie es nicht unter einer Linie reduzieren können, ohne semantische Stärke zu verlieren.
Ist es einfach der Fall, dass String-Interpolation für lange Strings nicht verwendet werden sollte?
Sollten wir nur mit String StringBuilder
für längere Strings?
var multi4 = new StringBuilder()
.AppendFormat("Width: {0}", width).AppendLine()
.AppendFormat("Height: {0}", height).AppendLine()
.AppendFormat("Background: {0}", background).AppendLine()
.ToString();
Oder gibt es etwas Eleganteres?
http://stackoverflow.com/questions/31764898/long-string-interpolation-lines-in-c6 – Ric
@DmytroShevchenko, habe ich darüber nachgedacht, so zu tun. Allerdings war ich mir nicht sicher, ob ich deine annehmen sollte, da ich sah, wie du die [bestgewählte Antwort] (http://stackoverflow.com/a/31764920/24874) von dem Link, den Ric gepostet hat, kopiere/einfügen und dann anders editieren . Das alles geschah innerhalb von 5 Minuten, so dass die Änderungen nicht sichtbar sind. Ihre Antwort ist technisch korrekt, aber ich hatte das Gefühl, dass Sie mir Anerkennung geben sollten. Ich würde Rics Kommentar gerne annehmen, aber das ist nicht möglich. –
@DrewNoakes Ihre Frage wurde als ein Duplikat der von Ric verknüpften Frage markiert. Ric war derjenige, der es auch markiert hat. Es ist also nicht nötig, noch eine weitere Instanz dieses Links zu meiner Antwort hinzuzufügen. Wenn Sie nicht zustimmen, würde ich Ihre Argumentation schätzen. Und natürlich habe ich den Code in meiner Antwort bearbeitet. Der Grund war jedoch nicht, dass es anders aussieht, sondern dass es dem Beispiel in Ihrer Frage entspricht. –