Чому люди продовжують плутати рядки з рядковими літералами? Прийнята відповідь - це чудова відповідь на інше питання; не до цього.
Я знаю, що це стара тема, але я приїхав сюди, можливо, з тим же питанням, що і з ОП, і мені неприємно бачити, як люди продовжують її неправильно читати. А може, я його неправильно читаю, не знаю.
Грубо кажучи, рядок - це область комп'ютерної пам’яті, яка під час виконання програми містить послідовність байтів, які можуть бути відображені в текстові символи. З іншого боку, рядковий літерал - це ще не скомпільований фрагмент вихідного коду, який представляє значення, яке використовується для ініціалізації рядка пізніше під час виконання програми, в якій він відображається.
У C # заява ...
string query = "SELECT foo, bar"
+ " FROM table"
+ " WHERE id = 42";
... не створює трирядковий рядок, а один вкладиш; конкатенація трьох рядків (кожна ініціалізована з іншого літералу), жодна з яких не містить модифікатор нового рядка.
Здається, що ОП запитує - принаймні, про що я б запитав цими словами - це не те, як ввести в складений рядок розриви рядків, що імітують тих, що знаходяться у вихідному коді, а як довго розбиватися на ясність , єдиний рядок тексту у вихідному коді без введення перерв у складеному рядку. І не вимагаючи збільшення часу виконання, витрачаючи на приєднання до декількох підрядів, що надходять із вихідного коду. Як і зворотні косої риски в лінійному рядку рядків у javascript або C ++.
Запропонуючи використання дослідних рядків, не зважаючи на функції StringBuilder
s, String.Join
s або навіть вкладені функції з обертанням рядків і що ні, змушує мене думати, що люди не дуже розуміють питання. А може, я цього не розумію.
Наскільки я знаю, C # не має (принаймні, у палеолітичній версії, яку я все ще використовую, з попереднього десятиліття), чітко створювати багаторядкові рядкові букви, які можна вирішити під час компіляції, а не виконання.
Можливо, поточні версії це підтримують, але я подумав, що поділяю різницю, яку я сприймаю між рядками та рядковими літералами.
ОНОВЛЕННЯ:
(З коментаря MeowCat2012) Можна. Підхід «+» від ОП є найкращим. Відповідно до специфікації, оптимізація гарантована: http://stackoverflow.com/a/288802/9399618