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