C # 6 bietet Compiler-Unterstützung für interpolierte String-Literale mit Syntax:
var person = new { Name = "Bob" };
string s = $"Hello, {person.Name}.";
Dies ist ideal für kurze Zeichenfolgen. Wenn Sie jedoch eine längere Zeichenfolge erstellen möchten, muss diese in einer einzelnen Zeile angegeben werden.
Mit anderen Arten von Zeichenfolgen 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 kann keinen Weg finden, dies mit String-Interpolation zu erreichen, ohne alles in einer Zeile zu haben:
var multi3 = $"Height: {height}{Environment.NewLine}Width: {width}{Environment.NewLine}Background: {background}";
Mir ist klar, dass Sie in diesem Fall \r\n
anstelle von Environment.NewLine
(weniger portabel) verwenden oder es an einen lokalen Standort ziehen können, aber es wird Fälle geben, in denen Sie es nicht unter eine Zeile reduzieren können, ohne die semantische Stärke zu verlieren.
Ist es einfach so, dass die String-Interpolation nicht für lange Strings verwendet werden sollte?
Sollten wir nur Zeichenfolgen StringBuilder
für längere Zeichenfolgen verwenden?
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?