成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C#中的協(xié)變和逆變是什么

本篇內(nèi)容介紹了“C#中的協(xié)變和逆變是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計(jì)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了上猶免費(fèi)建站歡迎大家使用!

1. 基本概念

官方:協(xié)變和逆變都是術(shù)語,前者指能夠使用比原始指定的派生類型的派生程度更大(更具體的)的類型,后者指能夠使用比原始指定的派生類型的派生程度更小(不太具體的)的類型。[MSDN]

公式:

協(xié)變:IFoo<父類> = IFoo<子類>;

逆變:IBar<子類> = IBar<父類>;

暫時(shí)不理解沒關(guān)系,您接著往下看。

2. 協(xié)變(Covariance)

1) out關(guān)鍵字

對(duì)于泛型類型參數(shù),out 關(guān)鍵字可指定類型參數(shù)是協(xié)變的。 可以在泛型接口和委托中使用 out 關(guān)鍵字。[MSDN]

2) 魯迅:一張圖勝過千言萬語(圖小看不清,單機(jī)鼠標(biāo)右鍵 -> 在新標(biāo)簽頁中打開圖片)

備注:泛型委托的協(xié)變?cè)硪彩且粯拥摹?/p>

3) 什么是協(xié)變?

協(xié)變就是對(duì)具體成員的輸出參數(shù)進(jìn)行一次類型轉(zhuǎn)換,且類型轉(zhuǎn)換的準(zhǔn)則是 “里氏替換原則”。

3. 逆變(Contravariance)

1) in關(guān)鍵字

對(duì)于泛型類型參數(shù),in 關(guān)鍵字可指定類型參數(shù)是逆變的。 可以在泛型接口和委托中使用 in 關(guān)鍵字。[MSDN]

2) 魯迅:一張圖勝過千言萬語(圖小看不清,單機(jī)鼠標(biāo)右鍵 -> 在新標(biāo)簽頁中打開圖片)

備注:泛型委托的逆變?cè)硪彩且粯拥摹?/p>

3) 什么是逆變?

逆變就是對(duì)具體成員的輸入?yún)?shù)進(jìn)行一次類型轉(zhuǎn)換,且類型轉(zhuǎn)換的準(zhǔn)則是 “里氏替換原則”。

4. 自問自答

1)協(xié)變、逆變 為什么只能針對(duì)泛型接口或者委托?而不能針對(duì)泛型類?

因?yàn)樗鼈兌贾荒芏x方法成員(接口不能定義字段),而方法成員在創(chuàng)建對(duì)象的時(shí)候是不涉及到對(duì)象內(nèi)存分配的,所以它們是類型(內(nèi)存)安全的。

為什么不針對(duì)泛型?因?yàn)榉盒皖愂悄0孱悾惓蓡T是包含字段的,不同類型的字段是影響對(duì)象內(nèi)存分配的,沒有派生關(guān)系的類型它們是不兼容的,也是內(nèi)存不安全的。

2)協(xié)變、逆變 為什么是類型安全的?

本質(zhì)上是里氏替換原則,由里氏替換原則可知:派生程度小的是派生程度大的子集,所以子類替換父類的位置整個(gè)程序功能都不會(huì)發(fā)生改變。

3)官方對(duì) 協(xié)變、逆變 的定義現(xiàn)在是否能看懂?

上面看懂了,官方定義肯定也是沒問題的。派生程度小可以理解為基類,派生程度大可以理解為子類或派生類,至于為什么用程度這個(gè)詞,是因?yàn)槔^承鏈的深度是沒限制的。

“C#中的協(xié)變和逆變是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

文章題目:C#中的協(xié)變和逆變是什么
本文路徑:http://jinyejixie.com/article46/pdcphg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)搜索引擎優(yōu)化、微信公眾號(hào)、軟件開發(fā)、網(wǎng)站策劃、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
庆元县| 霸州市| 亳州市| 邯郸市| 永川市| 酉阳| 桐乡市| 昭通市| 西乌珠穆沁旗| 临西县| 汉沽区| 祁东县| 犍为县| 新津县| 洛阳市| 金湖县| 青浦区| 巨鹿县| 思茅市| 苍南县| 精河县| 南溪县| 虎林市| 仁怀市| 上栗县| 三江| 镇江市| 道孚县| 左云县| 商河县| 白城市| 新野县| 辰溪县| 定结县| 曲阳县| 虞城县| 梁山县| 将乐县| 微山县| 平和县| 长岭县|