在c#中IsNullOrEmpty和IsNullOrWhiteSpace的区别

这个命令在c#中有什么区别

string text= " "; 1-string.IsNullOrEmpty(text.Trim()) 2-string.IsNullOrWhiteSpace(text) 
  • 来源:MSDN

IsNullOrWhiteSpace是一个方便的方法,类似于下面的代码,除了它提供了优越的性能:

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

空格字符由Unicode标准定义。 IsNullOrWhiteSpace方法解释任何当它作为空白字符传递给Char.IsWhiteSpace方法时返回值为true的字符。

第一种方法检查一个string是否为空或空string。 在你的例子中,你可能会冒空引用,因为你没有在修剪之前检查null

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

第二种方法检查string是否为空或string中的任意数量的空格(包括空string)

 2- string .IsNullOrWhiteSpace(text) 

string.IsNullOrWhiteSpace(文本)包含IsNullOrEmpty,但它也返回true如果string包含空格

在具体的例子中,你应该使用2),因为你在方法1)中运行一个空引用exception的风险,因为你调用一个可能为null的string的trim

空格和制表符是不同的

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

如果string为空或空,则String.IsNullOrEmpty(string value)返回true 。 作为参考,空string由“”(两个双引号字符)

String.IsNullOrWhitespace(string value)如果string为null,空或仅包含空格字符(如空格或制表符String.IsNullOrWhitespace(string value)返回true

要查看哪些字符算作空白,请参阅此链接: http : //msdn.microsoft.com/en-us/library/t809ektx.aspx

如果你的string(在你的情况下,variablestext )可以为null这将使一个很大的区别:

1- string.IsNullOrEmpty(text.Trim()) – > EXCEPTION,因为你调用一个空对象的方法

2- string.IsNullOrWhiteSpace(text)这将工作正常,因为空问题beeing内部检查

要使用第一个选项提供相同的行为,您将不得不首先检查它是否为空,然后使用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; } 

所以很明显,第二种方法也检查空格不仅是inputstring的长度。 空白指的是: https ://msdn.microsoft.com/en-us/library/system.char.iswhitespace( v = vs.110).aspx

在大多数情况下应该使用string.isNullOrWhiteSpace(text) ,因为它也包含一个空白string

 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