C # 6 забезпечує підтримку компілятора для інтерпольованих рядкових літералів із синтаксисом:
var person = new { Name = "Bob" };
string s = $"Hello, {person.Name}.";
Це чудово підходить для коротких рядків, але якщо ви хочете створити довший рядок, він повинен вказуватися в одному рядку?
За допомогою інших видів струн ви можете:
var multi1 = string.Format(@"Height: {0}
Width: {1}
Background: {2}",
height,
width,
background);
Або:
var multi2 = string.Format(
"Height: {1}{0}" +
"Width: {2}{0}" +
"Background: {3}",
Environment.NewLine,
height,
width,
background);
Я не можу знайти спосіб досягти цього за допомогою інтерполяції рядків, не маючи всього одного рядка:
var multi3 = $"Height: {height}{Environment.NewLine}Width: {width}{Environment.NewLine}Background: {background}";
Я усвідомлюю, що в цьому випадку ви можете використовувати \r\n
замість Environment.NewLine
(менш портативний) або витягнути його до локального, але трапляються випадки, коли ви не можете зменшити його нижче одного рядка, не втрачаючи смислової сили.
Це просто так, що інтерполяція рядків не повинна використовуватися для довгих рядків?
Чи слід просто рядувати, використовуючи StringBuilder
довші рядки?
var multi4 = new StringBuilder()
.AppendFormat("Width: {0}", width).AppendLine()
.AppendFormat("Height: {0}", height).AppendLine()
.AppendFormat("Background: {0}", background).AppendLine()
.ToString();
Або є щось більш елегантне?