Что является более эффективным, "data.Length == 0" или "data == string.Empty"? - PullRequest
4 голосов
/ 15 июля 2011

Я хочу проверить, содержит ли переменная строка data пустую строку.

Что эффективнее, data.Length==0 или data==string.Empty?

Я забыл сказать, что data был проверен и гарантированно не будет null.

Ответы [ 9 ]

13 голосов
/ 15 июля 2011

Результаты теста на 100 миллионов итераций:

Equality operator ==:   796 ms 
string.Equals:          811 ms 
string.IsNullOrEmpty:   312 ms 
Length:                 140 ms  [fastest]
Instance Equals:       1077 ms 

источник

11 голосов
/ 15 июля 2011

Используйте String.IsNullOrEmpty(data), скорее

2 голосов
/ 15 июля 2011

Как уже упоминалось, используйте string.IsNullOrEmpty(str) или string.IsNullOrWhiteSpace(str), представленные в .NET 4.0 framework.

2 голосов
/ 15 июля 2011

Рекомендуется использовать String.IsNullOrEmpty (или, если это соответствует вашим требованиям, из .Net 4.0 - String.IsNullOrWhiteSpace).

Если вы позвоните s.Length, вы получите NullReferenceExceptionесли строка null.Это означает, что вам нужно будет проверить if(s == null || s.Length == 0).Это будет наиболее эффективным и, вероятно, самым быстрым, но вы также можете использовать String.IsNullOrEmpty.

s == string.Empty вернет false, если строка будет null (null не совпадает с пустой строкой).

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

2 голосов
/ 15 июля 2011

Логически, data.Length == 0 более эффективен, потому что он просто сравнивает два целочисленных значения, тогда как data == String.Empty сравнивает строки (хотя и очень короткие).

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

В конце я сомневаюсь, что разницы будет достаточно, чтобы заметить.

2 голосов
/ 15 июля 2011

Ни одна проверка не станет вашим узким местом.Однако, если вы выберете первое, вы можете столкнуться с NullReferenceException, если строка пуста.У вас не было бы этой проблемы со вторым.

2 голосов
/ 15 июля 2011

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

2 голосов
/ 15 июля 2011

Я выберу третий, он менее подвержен ошибкам:

String.IsNullOrEmpty(data)

1 голос
/ 15 июля 2011

Используйте String.IsNullOrEmpty() для проверки.

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