五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C#知識梳理——泛型(2)協(xié)變逆變

2023-08-09 13:03 作者:羞澀男孩小小明  | 我要投稿

1.?? 什么是協(xié)變逆變?

在C#中,協(xié)變(covariance)和逆變(contravariance)是泛型類型參數(shù)的一種特性。它們允許一些類型轉換,使得泛型類型可以在某些情況下更加靈活。

?

協(xié)變(Covariance):協(xié)變允許將一個派生類對象賦值給一個基類對象。在C#中,協(xié)變可以應用于接口和委托類型。例如,如果一個接口定義了一個返回基類對象的方法,那么該接口的實現(xiàn)類可以返回派生類對象。在泛型類型中,使用關鍵字"out"可以標記泛型類型參數(shù)為協(xié)變。例如,IEnumerable<out T> 表示 T 是協(xié)變類型參數(shù)。

?

逆變(Contravariance):逆變允許將一個基類對象賦值給一個派生類對象。在C#中,逆變可以應用于委托類型。例如,如果一個委托類型定義了一個參數(shù)類型為派生類的方法,那么該委托可以接受基類對象作為參數(shù)。在泛型類型中,使用關鍵字"in"可以標記泛型類型參數(shù)為逆變。例如,IComparer<in T> 表示 T 是逆變類型參數(shù)。

簡而言之,協(xié)變是指能夠將一個派生類型的對象分配給一個基類型的引用,而逆變是指能夠將一個基類型的對象分配給一個派生類型的引用。

協(xié)變和逆變可以提供更靈活的類型轉換,使得在一些場景下可以更方便地使用泛型類型。但需要注意的是,協(xié)變和逆變的使用必須符合類型安全的規(guī)則,否則會導致編譯錯誤。在使用協(xié)變和逆變時,應仔細考慮類型的繼承關系,以確保類型的兼容性和正確性。

協(xié)變和逆變是針對接口和泛型委托來說的,離開了它們就沒有這個說法。out關鍵詞代表的是協(xié)變,in關鍵詞代表的是逆變

2.使用情況:在知道自己或者別人以后有用到父類通過子類實例化或者子類通過父類實例化


微軟定義好的協(xié)變的樣子

怎么解決這個問題?——協(xié)變逆變

泛型小總結:

1、 泛型的用處—讓泛型類、泛型方法、泛型接口、泛型委托更通用。減少代碼量。

2、 次要點:--約束 用的不是很多 但是會使得代碼的安全性提升很多

3、 協(xié)變逆變—最重要的是能讀懂源碼里的協(xié)變逆變 當然協(xié)變逆變可以用其他方法代替


C#知識梳理——泛型(2)協(xié)變逆變的評論 (共 條)

分享到微博請遵守國家法律
遵义市| 兰溪市| 鄱阳县| 天水市| 鸡泽县| 九龙城区| 灵丘县| 宁化县| 广昌县| 邵阳县| 合江县| 屯门区| 宿迁市| 凤城市| 东乡| 西城区| 武隆县| 营口市| 开江县| 玉环县| 珲春市| 蕉岭县| 揭西县| 霍山县| 松滋市| 安福县| 望城县| 林口县| 工布江达县| 巴楚县| 安乡县| 永和县| 开远市| 连江县| 凤阳县| 乐平市| 乌海市| 璧山县| 林西县| 黑山县| 长兴县|