Лучший способ повредить длинные строки в исходном коде C#

Если одно из существующих соединений исчезнет, ​​будет доступно следующее входящее соединение.

Итак, если у вас есть приложение для чата, и в чате есть 100 активных пользователей, следующий пользователь не будет быть в состоянии присоединиться, и клиент Firebase выдаст ошибку (LIMIT_EXCEEDED), когда они попробуют. Если один из активных пользователей уходит (отключает, закрывает вкладку своего браузера и т. Д.), Следующий пользователь будет иметь возможность подключаться.

36
задан Scott Lawrence 6 January 2009 в 06:08
поделиться

9 ответов

Это сделано во время компиляции. Это точно эквивалентно "string1string2string3".

предположим Вы имеете:

string x = "string1string2string3"
string y = "string1" + "string2" + "string3"

компилятор выполнит соответствующее интернирование таким образом, что X и Y относятся к тем же объектам.

РЕДАКТИРОВАНИЕ: существует большой разговор [приблизительно 111] в ответах и комментариях. Многие разработчики, кажется, полагают, что конкатенация строк должна всегда быть сделанной с StringBuilder. Это - сверхобобщение - это стоит понять , почему StringBuilder хорошо в некоторых ситуациях, а не в других .

51
ответ дан Jon Skeet 8 August 2019 в 15:40
поделиться

Если пробел не важен тогда, можно использовать символ ESC для записи многострочных строк в коде. Это полезно, если у Вас есть запрос в Вашем коде, например:

string query = @"SELECT whatever
FROM tableName
WHERE column = 1";

Это даст Вам строку с разрывами строки и вкладками, но для запроса, который не имеет значения.

40
ответ дан Rune Grimstad 8 August 2019 в 15:40
поделиться

Ваш пример будет связан во время компиляции. Все встроенные строки и строковые переменные константы связываются во время компиляции.

Что-то для учета - то, который включая любые строки только для чтения задержит concatting ко времени выполнения. строка. Пустой и Среда. NewLine являются оба строковыми переменными только для чтения.

7
ответ дан James Newton-King 8 August 2019 в 15:40
поделиться

это действительно зависит от того, в чем Вы нуждаетесь. Обычно, если Вам будет нужно к строкам concat, лучшая производительность во времени выполнения будет достигнута при помощи StringBuilder. При обращении в исходном коде чего-то как var str = "String1" + "String2", это будет преобразователь в строку str = "String1String2" на компиляции. В этом случае у Вас нет конкатенации наверху

1
ответ дан Tamir 8 August 2019 в 15:40
поделиться

Конкатенация сделана во время компиляции, таким образом, нет никакого времени выполнения наверху.

3
ответ дан Maxam 8 August 2019 в 15:40
поделиться

StringBuilder является хорошим способом пойти, если у Вас есть многие (больше, чем приблизительно четыре) строки для конкатенации. Это быстрее.

Используя Строку. Concat в Вас пример выше сделан во время компиляции. Так как они - литеральные строки, они оптимизированы компилятором.

, Если Вы однако используете переменные:

string a = "string1";
string b = "string2";
string c = a + b;

Это сделано во времени выполнения.

1
ответ дан Sani Singh Huttunen 8 August 2019 в 15:40
поделиться

Разве Вы не можете использовать StringBuilder?

0
ответ дан Echilon 8 August 2019 в 15:40
поделиться

StringBuilder будет Вашим самым быстрым подходом при использовании какой-либо суммы строк.

http://dotnetperls.com/Content/StringBuilder-1.aspx

, Если Вы просто делаете, некоторые представляют в виде строки (5 или меньше, хорошее правило), скорость не будет иметь значения, какого вида из конкатенации Вы используете.

-3
ответ дан naspinski 8 August 2019 в 15:40
поделиться

Есть способ сделать это. Мой фаворит использует строковый метод из C #. Пример первый:

string s = string.Format ("{0} {1} {0}", "Hello", "By"); результат s = "Hello By Hello";

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

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