有問題的內部以下Guidelines for Overriding Equals() and Operator == (C# Programming Guide),重寫等於(object),以及等於(type)時,覆蓋gethashcode似乎是可取的。在覆蓋等於
在我的理解中,有關於重寫Equals的最佳實現的無盡討論。不過,我仍然希望理解Equals概念稍微好一些,併爲我自己決定。
我問題可能會有點noobish,但在這裏我們去:
- 等於(對象)和equals之間的主要區別是什麼(類型)(獨立給定參數)?
據我瞭解(我可能是完全錯誤的,所以這是在同一時間的問題):
的equals(對象)是在方法構建看起來(如果對象 引用是相同的。和Equals(類型)是您創建的本地方法 。所以實際上,你在這門課上的是等於 與2重載。
- 爲什麼他們檢查財產平等兩次?
在的equals(對象):
return base.Equals(obj) && z == p.z;
和等於(型):
return base.Equals((TwoDPoint)p) && z == p.z;
爲什麼建議實施的Equals(類型) 方法?
我的大部分問題都在我的問題1中發表。所以請注意任何錯誤或誤導性的理由。此外,隨時添加任何信息,它一定會有所幫助。
預先感謝
非常感謝您的先生。我不知道IEquatable接口。所以我需要在我的類中實現這一點,以便能夠使用Equals(type)方法?這個標準是否實施?如果這沒有實現,那麼Equals(type)就變成了給定類中定製的方法?次要的,你說大部分時間,只有一個等於使用,如何確定等於?或者你的意思是程序員通常只實現了正確的等號(所以只有2箇中的一個)? –
dylanmensaert
2013-03-14 13:07:29
除非你的類實現了'IEquatable'沒有什麼會知道使用你的'Equals(Type)'方法 - 沒有必要添加這個方法。對不起,我不明白你的第二個問題。 –
Jamiec
2013-03-14 13:10:54
謝謝。那麼,爲了澄清我的第二個問題,你回答了我'爲什麼他們檢查支持平等不止一次':'他們不,通常只有一個被使用。如何確定哪一個等於方法(.Net是否確定這是智力?)被使用。或者你的意思是程序員只實現了正確的(所以eather equals(type)或equals(obj))方法。 (取決於當前類是否在列表中實現) – dylanmensaert 2013-03-14 13:18:50