C# 6 porta il supporto compilatore per stringhe interpolate con la sintassi:multilinea C# interpolato stringa letterale
var person = new { Name = "Bob" };
string s = $"Hello, {person.Name}.";
Questo è grande per stringhe brevi, ma se si vuole produrre una stringa più lunga deve si essere specificata su una sola linea?
Con altri tipi di stringhe è possibile:
var multi1 = string.Format(@"Height: {0}
Width: {1}
Background: {2}",
height,
width,
background);
Oppure:
var multi2 = string.Format(
"Height: {1}{0}" +
"Width: {2}{0}" +
"Background: {3}",
Environment.NewLine,
height,
width,
background);
non riesco a trovare un modo per raggiungere questo obiettivo con interpolazione stringa senza avere tutto una sola riga:
var multi3 = $"Height: {height}{Environment.NewLine}Width: {width}{Environment.NewLine}Background: {background}";
Mi rendo conto che in questo caso è possibile utilizzare \r\n
al posto di Environment.NewLine
(meno portabile) o estraetelo a un locale, ma ci saranno casi in cui non è possibile ridurlo sotto una linea senza perdere forza semantica.
È semplicemente il caso che l'interpolazione delle stringhe non debba essere utilizzata per stringhe lunghe?
Dovremmo semplicemente usare stringhe usando StringBuilder
per stringhe più lunghe?
var multi4 = new StringBuilder()
.AppendFormat("Width: {0}", width).AppendLine()
.AppendFormat("Height: {0}", height).AppendLine()
.AppendFormat("Background: {0}", background).AppendLine()
.ToString();
Oppure c'è qualcosa di più elegante?
http://stackoverflow.com/questions/31764898/long-string-interpolation-lines-in-c6 – Ric
@DmytroShevchenko, ho pensato di farlo. Tuttavia non ero sicuro di accettare il tuo mentre ti guardavo copiare/incollare la [risposta più votata] (http://stackoverflow.com/a/31764920/24874) dal link che Ric ha pubblicato, quindi modificarlo per apparire diverso . Tutto è successo entro 5 minuti, quindi le modifiche non sono visibili. La tua risposta è tecnicamente corretta, ma sentivo che dovresti aver dato credito. In realtà vorrei accettare il commento di Ric, ma non è possibile. –
@DrewNoakes la tua domanda è stata contrassegnata come un duplicato della domanda collegata da Ric. Anche Ric lo ha segnato. Quindi non c'è bisogno di aggiungere un'altra istanza di quel collegamento alla mia risposta. Se non sei d'accordo, apprezzerei il tuo ragionamento. E naturalmente ho modificato il codice nella mia risposta. Anche se, la ragione non era quella di farlo sembrare diverso, ma piuttosto di corrispondere all'esempio nella tua domanda. –