Я обычно обертываю длинные строки, конкатенируя их:
Log.Debug("I am a long string. So long that I must " +
"be on multiple lines to be feasible.");
Это совершенно эффективно, поскольку компилятор обрабатывает конкатенацию строковых литералов. Я также считаю, что это самый чистый способ справиться с этой проблемой (здесь перечислены параметры).
Этот подход хорошо работал с String.Format
:
Log.Debug(String.Format("Must resize {0} x {1} image " +
"to {2} x {3} for reasons.", image.Width, image.Height,
resizedImage.Width, resizedImage.Height));
Однако теперь я никогда не хочу использовать String.Format
снова в этих ситуациях, поскольку интерполяция строк С# 6 намного читаема. Я обеспокоен тем, что у меня больше нет эффективного, но чистого способа форматирования длинных строк.
Мой вопрос в том, может ли компилятор каким-то образом оптимизировать что-то вроде
Log.Debug($"Must resize {image.Width} x {image.Height} image " +
$"to {resizedImage.Width} x {resizedImage.Height} for reasons.");
в приведенный выше эквивалент String.Format
или если альтернативный подход, который я могу использовать, будет не менее эффективным (из-за ненужной конкатенации), в то же время сохраняя чистое структурирование моего кода (в соответствии с точками, поднятыми в ссылке выше).