C #: нужно ли "" присваивать строку, чтобы она была пустой? - PullRequest
3 голосов
/ 28 мая 2010

Должно ли "" быть присвоено строке, чтобы она стала пустой?

Или это должно быть нулевое значение?

Ответы [ 4 ]

6 голосов
/ 28 мая 2010

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

string.Empty
5 голосов
/ 28 мая 2010

ИМХО, лучший подход - назначить его как String.Empty, если вы хотите, чтобы это была пустая строка (а не ноль).

4 голосов
/ 28 мая 2010

Это зависит от контекста. Часто вы оставляете строку нулевой, если вы просто собираетесь присвоить ей. Если вы используете его в контексте, где вы собираетесь выполнить над ним дополнительные действия, которые потерпят неудачу, если ссылка была нулевой и не хотите проверять, является ли она пустой вначале, тогда пустая строка может быть лучше. Я часто делаю это, если получаю строковый параметр и хочу что-то извлечь из него.

public string Foo( string bar )
{
    bar = bar ?? string.Empty;

    return bar.ToLower();
}

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

public string Foo( string bar )
{
    return bar == null ? null : bar.ToLower();
}
1 голос
/ 28 мая 2010

Зависит от того, что вы собираетесь делать со строкой. Если вы установите его в «», это допустимый объект, и он не вызовет исключений нулевой ссылки, когда вы передадите его какой-либо функции, ожидающей строку. Но вы также теряете возможность выполнять (быстрое) «if ​​(str == null)», и среда выполнения в итоге вызывает функцию для сравнения строк.

...