本文將對作者開發過程中
最近編程時遇到一個相等運算符重載的問題
我定義的Coordinate類原先是這樣重載相等運算符的
publice class Coordinates
{
public override bool Equals(object obj)
{
if (!(obj is Coordinates)) return false;
Coordinates other = (Coordinates)obj;
return (this
}
public static bool operator ==(Coordinates lhs
{
return lhs
}
public static bool operator !=(Coordinates lhs
{
return !(lhs == rhs);
}
}
這也是運算符重載時常見的情況
Coordinates actualPos = null
if (actualPos == null)
{
}
else
{
}
運行時就會拋出錯誤
為此我試圖在調用該語句前排除這種情況
public static bool operator ==(Coordinates lhs
{
if (lhs == null) return (rhs == null);
return lhs
}
結果發現這個函數會繼續調用自身
要解決這個問題
public static bool operator ==(Coordinates lhs
{
if ((lhs as object) == null) return ((rhs as object) == null);
return lhs
}
lhs被映射為object後的
From:http://tw.wingwit.com/Article/program/net/201311/13080.html