Объедините по сравнению с конкатенацией пустой строки

out параметры в SQL Server забавны. Вы должны повторить себя везде .

В частности, здесь вы забыли упомянуть об этом в списке параметров при вызове хранимого процесса. dbo.InsertPhones @model, @out должно быть dbo.InsertPhones @model, @out out. Также может быть способ пропустить список параметров из этой строки и указать SQL Server, что вы даете ему имя хранимой процедуры, а не произвольный текст запроса, но я не уверен, как вы будете делать это конкретно здесь (с SqlCommand объект, это будет через свойство CommandType).

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

8
задан Jason Baker 6 January 2009 в 14:23
поделиться

7 ответов

IMO, это намного лучше ясно определить такую логику т.е. не использует конкатенацию строк, чтобы избежать пустой строки и использовать условный оператор или?? оператор.

Относительно других комментариев:

существует также выигрыш в производительности к использованию объединяющего пустой указатель оператора, так как никакая конкатенация не должна произойти (и, поэтому, никакой дополнительный строковый экземпляр не создается излишне),

Не верно. Компилятор C# компилирует "" + string2 в 100% тот же код как string1?? "". Кроме того, компилятор C# переводит + оператор для вызова в строку. Метод Concat, который в свою очередь проверяет споры со строкой. IsNullOrEmpty функционируют, и не выделяет новую строку в этом случае.

Также я рекомендовал бы использование Строки. Пустой по, "" поскольку это - константа и не требует создания новой Строки

Строка поддержки платформы.NET, интернирующая так "" и строка. Пустая точка к тому же региону памяти

10
ответ дан 5 December 2019 в 09:26
поделиться

Я не думаю, что каждый больше читаем, чем другой лично. Я предпочитаю это:

string foo = str ?? "";

просто, потому что я действительно как?? оператор.

Если бы Вы - новичок бренда, я думаю, что это было бы немного легче понять:

string foo = str == null ? "" : str;

или

string foo = "";
if (str != null) foo = str;

Однако Вы вид потребности спросить себя, "Как простой Вы действительно хотите добраться?"

3
ответ дан 5 December 2019 в 09:26
поделиться

Я предпочел бы Ваш второй пример первому, поскольку это является более превентивным против str быть пустым и более выразительно. Также я рекомендовал бы использование String.Empty "" поскольку это - константа и не требует создания нового String (и да это - экстремальное значение, придираются к мелочам, но важный для примечания).

1
ответ дан 5 December 2019 в 09:26
поделиться

Вторая строка выглядит более читаемой мне, она ясно дает понять намерение выражения правой стороны.

1
ответ дан 5 December 2019 в 09:26
поделиться

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

2
ответ дан 5 December 2019 в 09:26
поделиться

Я использовал бы объединить оператор или foo = str == null ? "" : str; по двум причинам:

  1. Первый пример не имеет того же поведения на других языках курчавой фигурной скобки (особенно Java и JavaScript), где добавление нулевой ссылки к пустой строке приводит к строке, содержащей текст null. В результате первый пример требует намного большего умственного усилия гарантировать, что это приведет к корректному поведению на создаваемом языке. Даже, учитывая другие подсказки это - C# (такой как строчный тип string), что-либо, что требует, чтобы разработчик замедлился и думал, "что является намерением этого кода" результаты в потерянной производительности. Это могло также представить ошибки при перемещении от языка до языка.

  2. Второй пример более ясно выражает намерение кода, который, как описано в исходном вопросе является:

    when str is null set foo to an empty string

    В противоположность первому примеру, который может быть считан как:

    set foo to an empty string with str appended (which may have the side effect of setting foo to an empty string when str is null)

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

1
ответ дан 5 December 2019 в 09:26
поделиться

вот статья о string.empty по сравнению с""

http://blogs.msdn.com/brada/archive/2003/04/22/49997.aspx

0
ответ дан 5 December 2019 в 09:26
поделиться
Другие вопросы по тегам:

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