Каковы различия между этими командами в С#
string text= " ";
1-string.IsNullOrEmpty(text.Trim())
2-string.IsNullOrWhiteSpace(text)
Каковы различия между этими командами в С#
string text= " ";
1-string.IsNullOrEmpty(text.Trim())
2-string.IsNullOrWhiteSpace(text)
IsNullOrWhiteSpace
- метод удобства, аналогичный следующий код, за исключением того, что он обеспечивает превосходную производительность:return String.IsNullOrEmpty(value) || value.Trim().Length == 0;
Символы белого пространства определяются стандартом Unicode.
IsNullOrWhiteSpace
метод интерпретирует любой символ, который возвращает значение true, когда оно передается методуChar.IsWhiteSpace
как белый пробел.
Первый метод проверяет, является ли строка пустой или пустой. В вашем примере вы можете рискнуть нулевой ссылкой, поскольку вы не проверяете значение null перед обрезкой
1- string.IsNullOrEmpty(text.Trim())
Второй метод проверяет, является ли строка нулевым или произвольное количество пробелов в строке (включая пустую строку)
2- string .IsNullOrWhiteSpace(text)
Метод IsNullOrWhiteSpace
охватывает IsNullOrEmpty
, но также возвращает true
, если строка содержит пробел.
В вашем конкретном примере вы должны использовать 2), поскольку вы рискуете исключить ссылочную ссылочную позицию в подходе 1), поскольку вы вызываете обрезку строки, которая может быть нулевой
пробел и вкладка - разница
string.IsNullOrWhiteSpace("\t"); //true
string.IsNullOrEmpty("\t"); //false
string.IsNullOrWhiteSpace(" "); //true
string.IsNullOrEmpty(" "); //false
String.IsNullOrEmpty(string value)
возвращает true
, если строка является пустой или пустой.
Для ссылки пустая строка представлена символом "" (два символа двойной кавычки)
String.IsNullOrWhitespace(string value)
возвращает true
, если строка является пустой, пустой или содержит только пробельные символы, такие как пробел или вкладка.
Чтобы увидеть, какие символы считаются пробелами, проконсультируйтесь по этой ссылке: http://msdn.microsoft.com/en-us/library/t809ektx.aspx
Если ваша строка (в вашем случае переменная text
) может быть нулевой, это приведет к большой разнице:
1- string.IsNullOrEmpty(text.Trim())
- > ИСКЛЮЧЕНИЕ, так как ваш вызов mthode нулевого объекта
2- string.IsNullOrWhiteSpace(text)
Это будет работать нормально, так как нулевая проблема проверяется внутри.
Чтобы обеспечить такое же поведение с использованием 1-го варианта, вам нужно будет каким-то образом проверить, если сначала не null, а затем используйте метод trim()
if ((text != null) && string.IsNullOrEmpty(text.Trim())) { ... }
Фактическая реализация методов выглядит.
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
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!