Есть ли способ разбить интерполированные строки на несколько строк в C#, выполняя одно и то же во время выполнения с точки зрения производительности


Я провел некоторое обсуждение с коллегами наилучшего способа форматирования следующего кода.

return $" this is a really long string.{a} this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string.{b} this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string.{c}";

Мой Гото: (новая строка на заранее обозначенной точке, то есть около 80 символов)

return  $" this is a really long string.{a} this is a really long string. this is a really long string." +
        $" this is a really long string. this is a really long string. this is a really long string." +
        $" this is a really long string. this is a really long string. this is a really long string." +
        $" this is a really long string. this is a really long string. this is a really long string." +
        $"{b} this is a really long string. this is a really long string. this is a really long string." +
        $" this is a really long string. this is a really long string. this is a really long string.{c}";

Однако я беспокоюсь, что добавляю ненужную работу во время выполнения. Так ли это на самом деле? Если да, то есть ли лучший способ сделать это?

Также я не нахожу перенос строк хорошим ответом >

1 2

1 ответ:

Строка TLDR.Формат вызывается для интерполяции, поэтому объединение строк, которые интерполируются, означает больше вызовов строки.Формат

Давайте посмотрим на IL

Чтобы получить более полное представление о том, что на самом деле происходит, когда у вас возникают эти вопросы, полезно проверить IL (промежуточный язык), в который компилируется ваш код, чтобы затем запустить его в среде выполнения .NET. Вы можете использовать ildasm для проверки IL скомпилированных .NET DLL и эксы.

Объединение Нескольких Строк

Итак, здесь вы можете увидеть, что за кулисами, строка.Формат вызывается для каждой из сцепленных строк.

Сцепленные строки

Используя Одну Длинную Строку

Здесь вы видите, что строковый формат вызывается только один раз, то есть, если вы говорите о производительности, этот способ будет немного лучше.

Одна строка