Разница между IsNullOrEmpty и IsNullOrWhiteSpace в С#

Каковы различия между этими командами в С#

string text= "  ";
1-string.IsNullOrEmpty(text.Trim())

2-string.IsNullOrWhiteSpace(text)

Ответ 1

IsNullOrWhiteSpace - метод удобства, аналогичный следующий код, за исключением того, что он обеспечивает превосходную производительность:

return String.IsNullOrEmpty(value) || value.Trim().Length == 0;

Символы белого пространства определяются стандартом Unicode. IsNullOrWhiteSpace метод интерпретирует любой символ, который возвращает значение true, когда оно передается методу Char.IsWhiteSpace как белый пробел.

Ответ 2

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

1- string.IsNullOrEmpty(text.Trim())

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

2- string .IsNullOrWhiteSpace(text)

Метод IsNullOrWhiteSpace охватывает IsNullOrEmpty, но также возвращает true, если строка содержит пробел.

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

Ответ 3

пробел и вкладка - разница

string.IsNullOrWhiteSpace("\t"); //true
string.IsNullOrEmpty("\t"); //false

string.IsNullOrWhiteSpace(" "); //true
string.IsNullOrEmpty(" "); //false

Ответ 4

String.IsNullOrEmpty(string value) возвращает true, если строка является пустой или пустой. Для ссылки пустая строка представлена ​​символом "" (два символа двойной кавычки)

String.IsNullOrWhitespace(string value) возвращает true, если строка является пустой, пустой или содержит только пробельные символы, такие как пробел или вкладка.

Чтобы увидеть, какие символы считаются пробелами, проконсультируйтесь по этой ссылке: http://msdn.microsoft.com/en-us/library/t809ektx.aspx

Ответ 5

Если ваша строка (в вашем случае переменная text) может быть нулевой, это приведет к большой разнице:

1- string.IsNullOrEmpty(text.Trim())  - > ИСКЛЮЧЕНИЕ, так как ваш вызов mthode нулевого объекта

2- string.IsNullOrWhiteSpace(text)  Это будет работать нормально, так как нулевая проблема проверяется внутри.

Чтобы обеспечить такое же поведение с использованием 1-го варианта, вам нужно будет каким-то образом проверить, если сначала не null, а затем используйте метод trim()

if ((text != null) && string.IsNullOrEmpty(text.Trim())) { ... }

Ответ 6

Фактическая реализация методов выглядит.

        public static bool IsNullOrEmpty(String value) {
        return (value == null || value.Length == 0); 
    }

    public static bool IsNullOrWhiteSpace(String value) {
        if (value == null) return true; 

        for(int i = 0; i < value.Length; i++) { 
            if(!Char.IsWhiteSpace(value[i])) return false; 
        }

        return true;
    }

Так что, по-видимому, второй метод также проверяет белые пробелы не только на длину входной строки. Пробелы: https://msdn.microsoft.com/en-us/library/system.char.iswhitespace(v=vs.110).aspx

Ответ 7

string.isNullOrWhiteSpace(текст) следует использовать в большинстве случаев как , а также пустую строку.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //Your code goes here
            var str = "";

            Console.WriteLine(string.IsNullOrWhiteSpace(str));              

        }
    }
}

Он возвращает True!