我有一個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