小编典典

string.IsNullOrEmpty(string) 与 string.IsNullOrWhiteSpace(string)

all

在 .NET 4.0
及更高版本中检查字符串时是否使用string.IsNullOrEmpty(string)被认为是不好的做法?string.IsNullOrWhiteSpace(string)


阅读 132

收藏
2022-06-08

共1个答案

小编典典

最佳实践是选择最合适的一个。

.Net Framework 4.0 Beta 2 为字符串提供了一个新的 IsNullOrWhiteSpace() 方法,该方法将
IsNullOrEmpty() 方法推广到除了空字符串之外还包括其他空格。

术语“隐藏空间”包括屏幕上不可见的所有字符。 例如,空格、换行符、制表符和空字符串是空白字符*。

参考:这里

就性能而言,IsNullOrWhiteSpace 并不理想但很好。方法调用将导致小的性能损失。此外,如果您不使用 Unicode
数据,IsWhiteSpace 方法本身有一些可以删除的间接方法。与往常一样,过早的优化可能是邪恶的,但它也很有趣。

参考:这里

查看源代码 (参考源代码 .NET Framework 4.6.2)

IsNullorEmpty

[Pure]
public static bool IsNullOrEmpty(String value) {
    return (value == null || value.Length == 0);
}

为空或空白

[Pure]
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;
}

例子

string nullString = null;
string emptyString = "";
string whitespaceString = "    ";
string nonEmptyString = "abc123";

bool result;

result = String.IsNullOrEmpty(nullString);            // true
result = String.IsNullOrEmpty(emptyString);           // true
result = String.IsNullOrEmpty(whitespaceString);      // false
result = String.IsNullOrEmpty(nonEmptyString);        // false

result = String.IsNullOrWhiteSpace(nullString);       // true
result = String.IsNullOrWhiteSpace(emptyString);      // true
result = String.IsNullOrWhiteSpace(whitespaceString); // true
result = String.IsNullOrWhiteSpace(nonEmptyString);   // false
2022-06-08