?操作员显示"unreachable code detected"警告



我正在实现一个equals方法,其中一个相等条件是两个日期匹配。我当前的代码是:

public override bool Equals(object obj)
{
    if (obj == null || obj.GetType() != typeof(Appointment))
        return false;
    Appointment other = obj as Appointment;
    bool equal = true;
    equal = (this.date == null ? (other.date == null) : (this.date.Equals(other.date)));
    //more stuff here
    return equal
}

当我尝试构建这个时,我收到一个指向另一个的警告。date==null语句说检测到无法访问的代码

然而,当我用这个替换它时:

if (this.date == null)
    equal = other.date == null;
else
    equal = (this.date.Equals(other.date));

我没有收到这样的警告

我错过了什么?

当数据类型为"object"时,我不会收到这样的警告,但当我将数据类型更改为"DateTime"时,就会收到警告。所以它与数据类型有关。日期时间不能为null。无论如何,你应该检查"其他"是否为空:
Appointment other = obj as Appointment;
bool equal = false;  // init to false is better
if (other != null)
{
    equal = (this.date == null ? (other.date == null) : (this.date.Equals(other.date)));
}
return equal;

最新更新