什么是協(xié)變與逆變
創(chuàng)新互聯(lián)建站歡迎咨詢:13518219792,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),創(chuàng)新互聯(lián)建站網(wǎng)頁制作領(lǐng)域10多年,包括紙箱等多個行業(yè)擁有豐富建站經(jīng)驗,選擇創(chuàng)新互聯(lián)建站,為網(wǎng)站保駕護航!MSDN的解釋:
https://msdn.microsoft.com/zh-cn/library/dd799517.aspx
協(xié)變和逆變都是術(shù)語,前者指能夠使用比原始指定的派生類型的派生程度更小(不太具體的)的類型,后者指能夠使用比原始指定的派生類型的派生程度更大(更具體的)的類型。
泛型類型參數(shù)支持協(xié)變和逆變,可在分配和使用泛型類型方面提供更大的靈活性。
一開始我總是分不清協(xié)變和逆變,因為MSDN的解釋實在是嚴(yán)謹(jǐn)有余而易讀不足。
其實從中文的字面上來理解這兩個概念就挺容易的了:
"協(xié)變"即"協(xié)調(diào)的轉(zhuǎn)變","逆變"即"逆向的轉(zhuǎn)變"。
下面來一起看看詳細(xì)的介紹吧
C#中的協(xié)變與逆變
一、使用協(xié)變(Covariance)和逆變(Contravariance )能夠?qū)崿F(xiàn)數(shù)組之間、委托實例和方法之間、泛型委托實例之間、泛型接口的變量和泛型類型的對象之間、泛型接口的變量之間的隱式轉(zhuǎn)換;使用協(xié)變將允許使用比原指定類型派生程度更大(即更具體的)的類型,使用逆變將允許使用比原指定類型派生程度更?。锤痪唧w的)的類型;
1.協(xié)變和逆變都只支持引用類型,不支持值類型;
2.如果泛型接口或泛型委托的類型參數(shù)被聲明為協(xié)變或逆變,則該泛型接口或泛型委托被稱為變體(Variant);
二、數(shù)組只支持協(xié)變,即支持派生程度更大的類型的數(shù)組隱式轉(zhuǎn)換為派生程度更小的類型的數(shù)組:
object[] myArray = new string[5]; IComparable[] myOtherArray = new string[5];
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。