最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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é)變逆變的評論 (共 條)

分享到微博請遵守國家法律
星子县| 军事| 苗栗县| 宁波市| 保定市| 方正县| 古交市| 德钦县| 仙桃市| 永福县| 红安县| 行唐县| 肇源县| 德格县| 榆树市| 云安县| 方山县| 凌源市| 凤山县| 虹口区| 克什克腾旗| 姚安县| 丰顺县| 上蔡县| 平陆县| 济宁市| 大余县| 泉州市| 增城市| 尤溪县| 长子县| 平阳县| 嘉义县| 开平市| 阿拉善右旗| 屯留县| 正定县| 阜阳市| 白朗县| 建水县| 德清县|