在nulls和string.Empty上使用==或.Equals()

时间:2014-02-26 15:58:02

标签: c# null string

关于在字符串上使用.Equals()==,以下是检查string.Emptynull个对象的问题。

在比较string.Emptynull个对象时,我应该使用==还是应该使用.Equals()

// Add vars to instance variables
for (int i = 0; i < paramFirstList.Count; i++)
{
    // if the key is null, replace it
    // with a "null" string
    if (paramFirstList[i] == null)
    {
        _firstList.Add("null");
    }
    else if (paramFirstList[i] == string.Empty)
    {
        _firstList.Add("empty");
    }
    else
    {
        // Do something
    }
}

P.S。我理解最好将nullstring.Empty存储为对象类型,但出于这个特殊目的,我需要将它们存储为字符串表示形式:)。

P.P.S。为了清晰起见,添加了匈牙利符号

2 个答案:

答案 0 :(得分:4)

您应该始终支持==超过Equals。后者是基类Object类型的方法,在这种情况下将进行无用的转换。

如果您要检查string值是空还是空,请使用String.IsNullOrEmpty方法。相反,如果您需要采取不同的行动,那么请执行以下操作:

if (value == null)
{
    //do stuff
}
else if (value == string.Empty)
{
    // do other stuff
}

修改

正如评论中指出的, Equals上的一个重载string方法,它接收string参数。不过,我认为你应该养成使用==的习惯。它只是更好的恕我直言。

答案 1 :(得分:3)

如果您关注null,则应使用string.IsNullOrEmpty(),或者string.IsNullOrWhitespace()