c# 6 приносит поддержку компилятора для интерполированных строковых литералов с синтаксисом: < /p>
var person = new { Name = "Bob" };
string s = $"Hello, {person.Name}.";
< /code>
Это отлично подходит для коротких строк, но если вы хотите создать более длинную строку, должна быть указана на одной строке? var multi1 = string.Format(@"Height: {0}
Width: {1}
Background: {2}",
height,
width,
background);
< /code>
или: < /p>
var multi2 = string.Format(
"Height: {1}{0}" +
"Width: {2}{0}" +
"Background: {3}",
Environment.NewLine,
height,
width,
background);
< /code>
Я не могу найти способ достичь этого с помощью строковой интерполяции, не имея всей одной строки: < /p>
var multi3 = $"Height: {height}{Environment.NewLine}Width: {width}{Environment.NewLine}Background: {background}";
< /code>
Я понимаю, что в этом случае вы можете использовать \ r \ n < /code> вместо окружающей среды. newline < /code> (менее портативный) или вытянуть его на локальный, но будут случаи, когда вы не можете уменьшить его ниже одной строки, не теряя семантическую силу. Строки?var multi4 = new StringBuilder()
.AppendFormat("Width: {0}", width).AppendLine()
.AppendFormat("Height: {0}", height).AppendLine()
.AppendFormat("Background: {0}", background).AppendLine()
.ToString();
< /code>
или есть что -то более элегантное? < /p>
Подробнее здесь: https://stackoverflow.com/questions/332 ... ng-literal