String.Empty, null, Length или String.IsEmptyOrNull? - PullRequest
4 голосов
/ 05 января 2012

Какой способ действительно является самым быстрым способом проверки на пустую строку, и в любом конкретном случае требуется какой-либо конкретный.

1. String.IsNullOrEmpty()

2. str == null

3. str == null || str == String.Empty

4. str == null || str == ""

5. str == null || str.length == 0

Ответы [ 9 ]

19 голосов
/ 05 января 2012

Используйте опцию 1.

Если вы специально хотите проверить наличие null или пустых строк, то нет никаких причин использовать что-либо, кроме string.IsNullOrEmpty.Это канонический способ сделать это в .NET, и любые различия в производительности почти наверняка будут незначительными.

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

Квот Дональд Кнут:

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

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

3 голосов
/ 05 января 2012

Нашел этот сайт с некоторыми статистическими данными по различным методам: http://www.dotnetperls.com/empty-string

3 голосов
/ 05 января 2012

Вам небезразличен и пробел?

Если пробел допустим, используйте String.IsNullOrEmpty, в противном случае используйте String.IsNullOrWhiteSpace (в .Net 4.0 или выше) Последнее эквивалентно, но более производительно, чем String.IsNullOrEmpty(value) || value.Trim().Length == 0;

см. http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx

2 голосов
/ 05 января 2012

Разница в скорости будет незаметной.

Правильный способ сделать это - 1, потому что он самый безопасный и лучше читаемый.

1 голос
/ 05 января 2012

Используйте

String.IsNullOrEmpty()

, что является лучшим способом для .NET.

1 голос
/ 05 января 2012

String.IsNullOrEmpty() очень хорошо читается и работает / работает по назначению, был бы рад придерживаться этого.

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

0 голосов
/ 05 января 2012

В ваших примерах решение 2 самое быстрое.Но это решение отличается от других, поскольку оно не проверяет, является ли строка пустой.

В противном случае, учитывая, что вы хотите проверить, является ли строка нулевой или пустой, решение 5 является самым быстрым.String.IsNullOrEmpty () делает то же самое, что и решение 5, но добавляет вызов функции (если он не встроен во время выполнения).Тем не менее, я бы рекомендовал первое решение:

1 / снижение производительности незначительно

2 / проще читать

3 / это встроенный методэто будущее

0 голосов
/ 05 января 2012

Это лучший способ и рекомендуется использовать String.IsNullOrEmpty для наиболее быстрой проверки нулевых или пустых строк. Потому что его встроенный метод в String.

0 голосов
/ 05 января 2012

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

Кроме того, иногда вы спешите и случайно ставите проверку null в конце, получая неприятный сюрприз. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...