Многослойный C# интерполированный строковый буквальныйC#

Место общения программистов C#
Ответить
Anonymous
 Многослойный C# интерполированный строковый буквальный

Сообщение Anonymous »

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»