Разница между 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!