C#內建接口:IEquatable泛型
互聯網 2022/5/1 14:43:01
這節來講一下泛型接口:IEquatable。
IEquatable泛型接口處于System.Runtime命名空間下,最早在.NET Framework 2.0中發布,只有泛型版本。像之前我們講過的IComparable,IEnumerable接口,它們屬于是1.0時期的內建接口,那時C#還沒有泛型的概念,而2.0以后的版本,才有泛型的概念。之所以出現泛型接口,是因為通過泛型可以減少值類型的裝箱,以及實現類型安全。
我們先看一下IEquatable泛型接口中的元素:
這個接口里邊只有一個方法:Equals,返回一個Bool值,從名稱中我們可以得知,這個接口規定了一個用于和其它類型作比較的規范,所有實現了這個接口的類,我們就可以調用其Equals方法來跟自己做比較,當前,前提是得跟泛型類型一致,下面我將通過一段代碼來演示其用法:
有這樣一個測試類IEquatableTest,它有個Name屬性,以及顯示實現了IEquatable<IEquatableTest>接口得Equals方法(我個人覺得,為了與繼承于Object的Equals方法做區分,您應該顯示實現接口,避免在調用時出現歧義)。顯式實現的Equals方法里邊的內容是比較兩個對象的Name是否相等。
下面我們在Main方法中寫代碼調用一下:
控制臺輸出結果為:False。
我們都知道,Object本身就有個Equals方法,它默認是比較一個引用,如果兩個對象是同一個引用即相等,如果這個默認比較不滿足,我們通過重寫這個方法,也能自定義比較功能。但是這個方法接受一個Object類型的參數,存在裝箱和類型安全這樣的問題,因此我們也有可能需要一個性能高一些的,并且類型安全的比較方法,為了規范代碼,微軟推出了IEquatable泛型接口。
我們可以認為Object的Equals是IEquatable的非泛型版本方法,但是在實際應用過程中,我還是推薦大家顯式實現IEquatable,有一個良好的代碼規范,會讓人舒心,關于顯示實現接口相關介紹請查看:接口(interface)。

關于找一找教程網
本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。
本站提供了軟件編程、網站開發技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。
[C#內建接口:IEquatable泛型]http://www.yachtsalesaustralia.com/tech/detail-318495.html
- 2022-03-01沐雪多租寶商城源碼從.NetCore3.1升級到.Net6的步驟
- 2022-05-05C#對接金蝶EAS WebService 啟用安全模式調用
- 2022-05-05C#控制臺程序關閉監聽回調
- 2022-05-05C#判斷IP是否可以ping通
- 2022-05-05.NET混合開發解決方案7 WinForm程序中通過NuGet管理器引用集成WebView2控件
- 2022-05-05C#開發PACS醫學影像三維重建(十三):基于人體CT值從皮膚漸變到骨骼的梯度透明思路
- 2022-05-05C#入門詳解筆記(一)
- 2022-05-05Asp.net6.0 Swagger使用備忘
- 2022-05-05C#中調用CMD執行命令
- 2022-05-05C# 再次理解委托、事件與函數作為參數