我有一個類,我想重載在c#中的==運算符。我已經有一個.Equals覆蓋,正常工作。當我嘗試使用我的==運算符時,它在我的對象(Person)上給了我一個空引用異常。如果我試圖檢查它是否爲null,它將依次調用相同的運算符來檢查它是否爲null並創建一個無限循環。這似乎是一個巨大的缺陷,我無法找出正確的方法來做到這一點。超載時無限遞歸==
public static bool operator ==(Person person, object obj)
{
return person == null ? person.Equals(obj) : false;
}
public static bool operator !=(Person person, object obj)
{
return !(person == obj);
}
不應該是return person!= null? person.Equals(obj):false; –
與'null'比較時,應該使用'!object.ReferenceEquals(person,null)'來確保(並明確表示)你正在檢查引用的相等性。 – dlev
是的,你是對的謝謝 – viper110110