Почему люди продолжают путать строки со строковыми литералами? Принятый ответ - отличный ответ на другой вопрос; не к этому.
Я знаю, что это старая тема, но я пришел сюда, возможно, с тем же вопросом, что и ОП, и мне неприятно видеть, как люди продолжают неправильно его читать. Или, может быть, я неправильно понимаю, я не знаю.
Грубо говоря, строка - это область компьютерной памяти, которая во время выполнения программы содержит последовательность байтов, которые могут быть сопоставлены с текстовыми символами. Строковый литерал, с другой стороны, является частью исходного кода, еще не скомпилированного, который представляет значение, используемое для инициализации строки позже, во время выполнения программы, в которой она появляется.
В C # утверждение ...
string query = "SELECT foo, bar"
+ " FROM table"
+ " WHERE id = 42";
... не создает строку из трех строк, а содержит одну строку; конкатенация трех строк (каждая инициализируется из другого литерала), ни одна из которых не содержит модификатор новой строки.
Похоже, что OP спрашивает - по крайней мере, то, что я хотел бы спросить с этими словами - не о том, как ввести в скомпилированную строку разрывы строк, которые имитируют найденные в исходном коде, а о том, как разбить для большей ясности. одиночная строка текста в исходном коде без разрывов в скомпилированной строке. И не требуя расширенного времени выполнения, потратил на объединение нескольких подстрок из исходного кода. Как и обратные косые черты внутри многострочного строкового литерала в javascript или C ++.
Предлагая использовать дословные строки, неважно StringBuilder
s, String.Join
s или даже вложенные функции с инверсией строк, а что нет, я думаю, что люди не совсем понимают вопрос. Или, может быть, я не понимаю этого.
Насколько я знаю, C # не имеет (по крайней мере, в палеолитической версии, которую я все еще использую, из предыдущего десятилетия) функцию чистой генерации многострочных строковых литералов, которые могут быть разрешены во время компиляции, а не выполнения.
Возможно, текущие версии поддерживают это, но я подумал, что поделюсь разницей между строками и строковыми литералами.
ОБНОВИТЬ:
(Из комментария MeowCat2012) Вы можете. Подход «+» от OP - лучший. Согласно спецификации, оптимизация гарантирована: http://stackoverflow.com/a/288802/9399618