c# – String比较null和empty相等

使用C#和.NET 3.5,什么是最好的办法来处理这种情况。我有数百个字段来比较从各种来源(大多是字符串)。有时,源将字符串字段返回为空,有时为空。当然,有时在字段中有文本。我目前的比较strA!= strB不是切割它,因为strA是null和strB是“”,例如。我知道我可以做string.IsNullOrEmpty这导致一个双重的比较和一些丑陋。有没有更好的方法来处理这个?我认为扩展方法,但是你不能扩展运算符。

我想我正在寻找一个性感的方式来做到这一点。

最佳答案
因为你有几百个比较做,它听起来像你想要一个单一的函数调用,以便你可以减少杂乱和重复的代码。我不认为有一个内置函数做空/空字符串/比较检查所有在一个,但你可以只是一个自己:

static class Comparison
{
    public static bool AreEqual(string a, string b)
    {
        if (string.IsNullOrEmpty(a))
        {
            return string.IsNullOrEmpty(b);
        }
        else
        {
            return string.Equals(a, b);
        }
    }
}

然后你可以只使用一次调用你的函数进行每次比较:

        if(Comparison.AreEqual(strA[0], strB[0])) { // ... }
        if(Comparison.AreEqual(strA[1], strB[1])) { // ... }
        if(Comparison.AreEqual(strA[2], strB[2])) { // ... }
        if(Comparison.AreEqual(strA[3], strB[3])) { // ... }

如果你以后发现你需要担心额外的情况,比如忽略字符串开头或者结尾的空格,这种方法也会更容易扩展;你可以只是添加更多的逻辑到你的函数做一些修剪或任何,你不必对数百行代码调用你的函数进行任何修改。

转载注明原文:c# – String比较null和empty相等 - 代码日志