我有一个IEquatable<T>
方法这样的:IEquatable - 覆盖equals方法 - 检查空
public bool Equals(TravelOptions other)
{
if (other == null) return false;
return
this.OutTravelType.Equals(other.OutTravelType) & //enum
this.BackTravelType.Equals(other.BackTravelType) & //enum
this.OutTravelPointID.Equals(other.OutTravelPointID) & //int
this.BackTravelPointID.Equals(other.BackTravelPointID) & //int
this.OutTerminal.Equals(other.OutTerminal) & //string
this.BackTerminal.Equals(other.BackTerminal) & //string
this.OutTime.Equals(other.OutTime) & //string :(
this.BackTime.Equals(other.BackTime) & //string
this.Checkin.Equals(other.Checkin) & //int
this.OutFree.Equals(other.OutFree) & //bool
this.BackFree.Equals(other.BackFree); //bool
}
,但我需要做的就是增加一些检查空在那里各个位的东西,因为目前它会抛出一个NullReferenceException 有没有一些狡猾的做法,所以它不会最终成为一个讨厌的混乱? 外出和返回旅行类型是枚举,并始终设置,以便首先检查它们。外面和后面是免费的bools,旅行点是ints,其余都是字符串。 只是觉得它会变得非常混乱,如果我开始不得不检查空值,除非有一些速记方法做到这一点?
感谢
感谢您的回复,我以为我是在用按位进行短路,但我想不是,你能解释一下为什么==工作和Equals(请不要请。谢谢 – nat 2013-02-11 10:05:54
@nat:'=='就像使用两个参数调用静态方法一样,而当调用* instance *方法时,当目标引用为空时,该方法将失败。 – 2013-02-11 10:14:25