在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 !
- 如何用正则expression式匹配连字符?
- 将一个int存储在char数组中?
- 为什么它是有效连接空string,但不要调用“null.ToString()”?
- 将Objective-C指针types'NSString *'转换为C指针types'CFStringRef'(又名'const struct __CFString *')需要一个桥接转换
- 如何使名字大写
- 困惑于std :: runtime_error与std :: logic_error
- 如何用out参数编写asynchronous方法?
- Microsoft Crypto API禁用使用RSAES-OAEP密钥传输algorithm
- 分支感知编程