C#中IsNullOrEmpty和IsNullOrWhiteSpace之间的区别

时间:2013-09-10 04:18:38

标签: c# string difference isnullorempty string-function

C#

中这些命令之间的区别是什么
string text= "  ";
1-string.IsNullOrEmpty(text.Trim())

2-string.IsNullOrWhiteSpace(text)

8 个答案:

答案 0 :(得分:146)

  

IsNullOrWhiteSpace是一种类似于的方便方法   以下代码,但它提供了卓越的性能:

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

空白字符由Unicode标准定义。该   IsNullOrWhiteSpace方法解释返回a的任何字符   将值作为传递给Char.IsWhiteSpace方法的值为true   白色空间。

答案 1 :(得分:34)

第一种方法检查字符串是否为空或字符串。在您的示例中,您可能冒着空引用的风险,因为在修剪之前没有检查null

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

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

2- string .IsNullOrWhiteSpace(text)

方法IsNullOrWhiteSpace涵盖IsNullOrEmpty,但如果字符串包含空格,它也会返回true

在你的具体例子中,你应该使用2)因为你在方法1)中冒着空引用异常的风险,因为你在一个可能为null的字符串上调用trim

答案 2 :(得分:34)

空格,标签\t和换行符\n是差异

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

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

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

https://dotnetfiddle.net/4hkpKM

还会看到以下答案:whitespace characters

答案 3 :(得分:6)

如果字符串为null或为空,则

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

表示 如果字符串为null,为空,或仅包含空格或制表符等空格字符,则

String.IsNullOrWhitespace(string value)将返回true

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

答案 4 :(得分:4)

这是反编译后方法的实现

    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;
    }

很明显, IsNullOrWhiteSpace 方法也会检查传递的值是否包含空格。

空白参考:https://msdn.microsoft.com/en-us/library/system.char.iswhitespace(v=vs.110).aspx

答案 5 :(得分:3)

如果您的字符串(在您的情况下变量text)可能为null,则会产生很大的差异:

1 - string.IsNullOrEmpty(text.Trim())   - &GT; EXCEPTION ,因为您调用了一个空对象的mthode

2 - string.IsNullOrWhiteSpace(text)  这样可以正常工作,因为内部检查了空问题

要使用第一个选项提供相同的行为,您必须以某种方式检查它是否先为空,然后使用trim()方法

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

答案 6 :(得分:0)

string.isNullOrWhiteSpace(text) 在大多数情况下应该用作它还包含一个空白字符串

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

答案 7 :(得分:0)

[性能测试]以防万一有人想知道,在秒表测试中比较

if(nopass.Trim()。Length&gt; 0)

if(!string.IsNullOrWhiteSpace(nopass))

结果如下:

Trim-Length,空值= 15

非空值的修剪长度= 52

IsNullOrWhiteSpace,空值= 11

IsNullOrWhiteSpace非空值= 12