我有兩個物件 A 與 B
都是同一個類別
但是A.Equals(B);
得到的答案卻是 False! WTF?
摁... 結果果然是False
那應該如何才能比較兩個物件?
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/how-to-define-value-equality-for-a-type
簡單來說要複寫 Equals 跟 GetHashCode 方法
那來改動一下程式碼
摁!很棒 得到的結果是True了!
但是... 如果我之後新增了一個屬性
我不就可能改寫 GetHashCode 或者 Equals 方法嗎?
那我們可以改實作 IEqualityComparer 介面
但是我每多一個類別,就要多寫一次?
有沒有更懶惰的方案啊?
於是我翻到了 余小章的文章
[C#.NET] 利用序列化 比較兩物件是否相等
我們再改寫一下
跑了一下結果是True!開勳 打完收工!
我們再把方法弄成擴充方法!
以後要比較兩個物件的時候,就可以很方便的使用了呢!
以上如果有誤再麻煩各位留言了!
留言
張貼留言