1. <dd id="erndk"></dd>
                1. C#內建接口:IEquatable泛型

                  互聯網 2022/5/1 14:43:01

                  這節來講一下泛型接口:IEquatable。IEquatable泛型接口處于System.Runtime命名空間下,最早在.NET Framework 2.0中發布,只有泛型版本。像之前我們講過的IComparable,IEnumerable接口,它們屬于是1.0時期的內建接口,那時C#還沒有泛型的概念,而2.0以后的版本,才有泛型…

                      這節來講一下泛型接口: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

                  贊(0)
                  關注微信小程序
                  程序員編程王-隨時隨地學編程

                  掃描二維碼或查找【程序員編程王】

                  可以隨時隨地學編程啦!

                  技術文章導航 更多>
                  掃一掃關注最新編程教程
                  国产在线拍揄自揄视频菠萝

                        1. <dd id="erndk"></dd>