C#中IsNullOrEmpty和IsNullOrWhiteSpace之间的区别

Asi*_*ami 114 c# string isnullorempty difference string-function

C#中这些命令之间有什么区别?

string text= "  ";
1-string.IsNullOrEmpty(text.Trim())

2-string.IsNullOrWhiteSpace(text)
Run Code Online (Sandbox Code Playgroud)

fio*_*bio 162

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

return String.IsNullOrEmpty(value) || value.Trim().Length == 0;
Run Code Online (Sandbox Code Playgroud)

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

  • 实际上,修剪后的字符串长度测试也会捕获空字符串,所以 (2认同)

TGH*_*TGH 43

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

1- string.IsNullOrEmpty(text.Trim())
Run Code Online (Sandbox Code Playgroud)

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

2- string .IsNullOrWhiteSpace(text)
Run Code Online (Sandbox Code Playgroud)

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

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

  • 使用C#6可以安全地执行string.IsNullOrEmpty(text?.Trim()) (3认同)

fub*_*ubo 40

空格, Tab \t和换行符\n是不同的

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

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

string.IsNullOrWhiteSpace("\n"); //true
string.IsNullOrEmpty("\n"); //false
Run Code Online (Sandbox Code Playgroud)

https://dotnetfiddle.net/4hkpKM

也看到这个答案:空白字符

  • 怎么样`string.IsNullOrWhiteSpace("")`? (2认同)

JHu*_*d80 7

String.IsNullOrEmpty(string value)true如果字符串为null或为空,则返回.作为参考,空字符串由""(两个双引号字符)表示

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

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


Ľub*_*rgó 5

这是反编译后方法的实现

    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;
    }
Run Code Online (Sandbox Code Playgroud)

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

空格参考:https ://msdn.microsoft.com/zh-cn/library/system.char.iswhitespace( v= vs.110).aspx