最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章看懂C#中的協(xié)變、逆變

 更新時(shí)間:2019年08月29日 09:34:37   作者:Virgil-Zhou  
這篇文章主要給大家介紹了如何通過(guò)一篇文章看懂C#中協(xié)變、逆變的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1. 基本概念

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

公式:

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

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

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

2. 協(xié)變(Covariance)

1) out關(guān)鍵字

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

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

   

           備注:泛型委托的協(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) 魯迅:一張圖勝過(guò)千言萬(wàn)語(yǔ)(圖小看不清,單機(jī)鼠標(biāo)右鍵 -> 在新標(biāo)簽頁(yè)中打開圖片)

     

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

        3) 什么是逆變?

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

4. 自問(wèn)自答

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

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

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

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

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

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

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • C# Ado.net實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程列表及參數(shù)信息示例

    C# Ado.net實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程列表及參數(shù)信息示例

    這篇文章主要介紹了C# Ado.net實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程列表及參數(shù)信息,結(jié)合實(shí)例形式總結(jié)分析了C#針對(duì)SQLServer數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程及參數(shù)信息的各種常見(jiàn)操作技巧,需要的朋友可以參考下
    2019-02-02
  • Unity實(shí)現(xiàn)簡(jiǎn)單虛擬搖桿

    Unity實(shí)現(xiàn)簡(jiǎn)單虛擬搖桿

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)簡(jiǎn)單虛擬搖桿,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • c#對(duì)字符串操作的技巧小結(jié)

    c#對(duì)字符串操作的技巧小結(jié)

    c#對(duì)字符串操作的技巧小結(jié),需要的朋友可以參考一下
    2013-04-04
  • 在C#中使用OpenCV(使用OpenCVSharp)的實(shí)現(xiàn)

    在C#中使用OpenCV(使用OpenCVSharp)的實(shí)現(xiàn)

    這篇文章主要介紹了在C#中使用OpenCV(使用OpenCVSharp)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 最新評(píng)論

    册亨县| 湘西| 台前县| 宜城市| 东至县| 华坪县| 克山县| 息烽县| 天祝| 开阳县| 湘潭市| 绥江县| 南投市| 稷山县| 明水县| 蒲城县| 峨边| 湘西| 清新县| 垫江县| 铅山县| 醴陵市| 香河县| 五常市| 灵丘县| 涿鹿县| 日照市| 武夷山市| 田阳县| 江油市| 开鲁县| 龙游县| 寻甸| 龙陵县| 古蔺县| 上栗县| 彩票| 江陵县| 开封县| 永嘉县| 娱乐|