在C#中检查null和string.Empty

5

重复。我以前见过这个问题。叹气,现在我必须深入SO来找到它。 - George Stocker
在理论上,-1 到 Gortok... 在投票关闭之前找到重复项! - Jon B
找到了,Jon B:https://dev59.com/questions/XXVC5IYBdhLWcg3w51hv - George Stocker
https://dev59.com/NXVC5IYBdhLWcg3wihqv - George Stocker
好的,Gortok - +1 给你(因为你已经解决了问题)。 - Jon B
5个回答

31

@Jay 是正确的,它们不是完全一样的。 String.IsNullOrEmpty() 是一个方便的方法,用于检查null和""。


19

不,它们不是相同的。

string.Empty"" 是相同的,都是一个实际的对象:长度为0的字符串。而null 表示没有对象。


6

它们并不相同,mscorlib 中 String.IsNullOrEmpty(string) 的实现证明了这一点:

public static bool IsNullOrEmpty(string value)
{
    if (value != null)
    {
        return (value.Length == 0);
    }
    return true;
}

抱歉,我是StackOverflow.com的新用户。 - Antonio Pelleriti
+1 提醒人们出于学习目的前往代码源。 - Matthew Lock

3
不,它们不一样。第一个检查变量是否被初始化或后来设置为“null”。第二个检查变量的值是否为空字符串“”。 但是,你都不应该使用。你应该使用string.IsNullOrEmpty(var)。

0
但是有时候你想知道字符串是否为NULL,而它是否为空并不重要(在面向对象设计中)。例如,你有一个方法,它将返回NULL或一个字符串。你这样做是因为null意味着操作失败,而空字符串意味着没有结果。
在某些情况下,你希望在对其他对象采取进一步操作之前知道它是否失败或没有结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接