Подтвердить что ты не робот

Наиболее целесообразным способом проверки пустых строк в С#

Каков наилучший способ проверки пустых строк (я не вопрос об инициализации!) в С# при рассмотрении производительность кода? (см. код ниже)

string a;

// some code here.......


if(a == string.Empty)

или

if(string.IsNullOrEmpty(a))

или

if(a == "")

любая помощь будет оценена.:)

4b9b3361

Ответ 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.