В C#, что лучший способ состоит в том, чтобы распространить однострочный строковый литерал через несколько исходных строк?

Предположим, что у Вас есть длинная строка (> 80 символов), что Вы хотите распространиться через несколько исходных строк, но не хотите включать любые символы новой строки.

Одна опция состоит в том, чтобы связать подстроки:

string longString = "Lorem ipsum dolor sit amet, consectetur adipisicing" +
    " elit, sed do eiusmod tempor incididunt ut labore et dolore magna" +
    " aliqua. Ut enim ad minim veniam";

Существует ли лучший путь, или действительно ли это - наилучший вариант?

Править: "Лучшим" я имею в виду самый легкий для кодера читать, записать, и редактирование. Например, если Вы действительно хотели новые строки, очень легко посмотреть на:

string longString =
@"Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam";

Я задаюсь вопросом, существует ли что-то, столь же убирают, когда Вы не хотите новых строк.

40
задан Matthew 2 January 2010 в 02:51
поделиться

6 ответов

Я бы использовал вариант Вашего метода:

string longString =
    "Lorem ipsum dolor sit amet, consectetur adipisicing " + 
    "elit, sed do eiusmod tempor incididunt ut labore et dolore magna " + 
    "aliqua. Ut enim ad minim veniam.";

Здесь я начинаю строку на линии после знака равенства, так что все они выстраиваются в линию, а также слежу за тем, чтобы пробел оставался в конце строки (опять же, в целях выравнивания)

.
55
ответ дан 27 November 2019 в 01:14
поделиться

Если вы хотите, чтобы код был минимальным и легко читался, я бы все равно использовал строку @ literal. Плюс она быстрее, если исходный код длинный и...

string verbatimLit = @" 
   __   __  
  /  `-'  \ 
 /_| N   |_\  Sometimes
   |  I  |    format in code
   |   N |    matters
   |_____|  
";

Тогда удалите новые строки из строки в 1 строке,

verbatimLit.Replace(Environment.NewLine, " ");
35
ответ дан 27 November 2019 в 01:14
поделиться

Ваша оригинальная идея, вероятно, самый простой способ получить встроенную строку литералов в вашем коде. Компилятор C# объединяет литералы, сконцентрированные с + - так что, по сути, это эквивалентно одной действительно длинной строке.

Другой вариант, конечно, это экстернализация строки в конфигурационный файл или в файл настроек. Это позволило бы сделать ее более легко читаемой и легкой для изменения или локализации. Лично я избегаю размещать длинные строки текста непосредственно в коде приложения, если только они не очень статичны и не требуют локализации - текст сообщения внутреннего исключения и тому подобное.

.
12
ответ дан 27 November 2019 в 01:14
поделиться

Для SQL-запросов или других длинных строк, которые имеют свой собственный синтаксис, я иногда делаю что-то вроде этого:

        private const string QUERY = @"
SELECT *
FROM Table1 AS T1
INNER JOIN Table2 AS T2 ON T1.ID = T2.T1ID
WHERE T1.VALUE = @P1
GROUP BY T2.OTHERVALUE
";

Это оставляет форматирование строки нетронутым.

.
7
ответ дан 27 November 2019 в 01:14
поделиться

Можно использовать несколько консолей, а затем объединять их в одну большую строку:

const string part1 = "part 1";
const string part2 = "part 2";
const string part3 = "part 3";
string bigString = part1 + part2 + part3;

Компилятор все равно "сложит" эти константы в одну большую строку, так что по сравнению с вашим исходным примером кода этот метод не требует никаких затрат времени на выполнение.

Этот подход имеет ряд преимуществ:

  1. Подстроки могут быть легко повторно использованы в других частях приложения.
  2. При желании подстроки могут быть определены в нескольких файлах или типах.
-5
ответ дан 27 November 2019 в 01:14
поделиться

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

.
0
ответ дан 27 November 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: