Наиболее целесообразным способом проверки пустых строк в С#
Каков наилучший способ проверки пустых строк (я не вопрос об инициализации!) в С# при рассмотрении производительность кода? (см. код ниже)
string a;
// some code here.......
if(a == string.Empty)
или
if(string.IsNullOrEmpty(a))
или
if(a == "")
любая помощь будет оценена.:)
Ответы
Ответ 1
Не сравнивайте строки с String.Empty
или ""
, чтобы проверить пустые строки.
Вместо этого сравните, используя String.Length == 0
Разница между String.Empty
и ""
очень мала. String.Empty
не создаст никакого объекта, а ""
создаст новый объект в памяти для проверки. Следовательно, string.empty лучше в управлении памятью.
Но сравнение с String.Length == 0
будет еще быстрее и лучший способ проверить пустую строку.
Ответ 2
Я думаю, что лучший способ - if(string.IsNullOrEmpty(a))
, потому что он быстрее и безопаснее других методов.
Ответ 3
string.IsNullOrEmpty(a)
он проверит как NULL || EMPTY
это реализация:
public static bool IsNullOrEmpty(string value)
{
if (value != null)
{
return (value.Length == 0);
}
return true;
}
Ответ 4
Вы также можете использовать Length
string input = "";
if (input != null)
{
if (input.Length == 0)
{
}
}
Ответ 5
Создайте метод расширения для полной проверки:
public static bool IsEmpty(this string s)
{
if(s == null) return true;
return string.IsNullOrEmpty(s.Trim()); // originally only (s)
}
Извините, не хороший код, исправлен. Теперь это скажет вам, если строка пуста или пустая после обрезки.
Ответ 6
Значение String.Empty будет расшифровано только во время выполнения, но с другой стороны значение "" известно во время самого компиляции.
Это единственное различие между этими двумя.
Но приходя к лучшей практике, если завтра M $решит, что из-за какой-то причины пустое значение должно использоваться как "вместо", тогда ваш код должен быть изменен каждый раз. Поэтому в этом случае лучше всего использовать String.Empty.
Это та же практика, что и для Path.Combine.
Ответ 7
Поздний приезд:
if a == ""
вызовет предупреждение CA1820 о анализе кода, поэтому вы определенно не должны этого делать. Для полного анализа см. CA1820: проверка пустых строк с использованием длины строки