簡體   English   中英

在第三方庫中將類的相等函數放在何處?

[英]Where to put the equality function for a class in a third party library?

我正在使用第三方庫,其中包含缺少operator ==()和Equals()的類。 我想自己實現一個,但我不確定如何命名以及放在哪里。 我試圖將兩個運算符添加為擴展方法,但都失敗了。 我現在寫了一個IsEqualTo()函數,但它導致相當混亂的客戶端代碼。 有誰知道更優雅的解決方案?

是繼承或包裝第三方課程的選擇嗎?

您將無法重載==運算符,但您可以創建可用於字典等的IEqualityComparer<T>

雖然您可以編寫Equals擴展方法,但它永遠不會被使用,因為Object上的虛方法總是適用,如果有適用的實例方法,編譯器即使有更具體的方法也不會查找擴展方法。

您可能希望將IsEqualTo方法重命名為ValueEquals或類似的東西......但我同意它仍然不理想。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM