0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C#中的兩個泛型修飾符

麥辣雞腿堡 ? 來源:CSDN博客 ? 作者:mykge ? 2023-01-14 11:48 ? 次閱讀

C#中,存在兩個泛型修飾符:in和out,他們分別對應逆變委托和協(xié)變委托。

我們知道,在C#中要想將一個泛型對象轉(zhuǎn)換為另一個泛型對象時,必須要將一個泛型對象拆箱,對元素進行顯式或隱式轉(zhuǎn)換后重新裝箱。

例如:

Listlobject=new List(){"0","1","2"};
List lint=new List();
foreach(Object obj in lobject)
{
lint.Add((int)obj);
}
在這個拆箱和裝箱的過程中,要消耗掉相當于lobject對象兩倍的內(nèi)存和資源,如果lobject對象非常大,這將是非常巨大的資源消耗。泛型修飾符就是用來解決這個問題的。
當兩個泛型對象的元素存在繼承關(guān)系是,可以在實現(xiàn)泛型對象是為泛型元素增加in或者out聲明,以便逆變或協(xié)變。

逆變泛型:
ListIn:IList
ListInlobject = new ListIn(){"0","1","2"};
ListIn lint=new ListIn;
lint = lobject;
協(xié)變泛型:
ListOut:IList
ListOut lint=new ListOut(){0,1,2};
ListOutlobject=new ListOut();
lobject=lint;

原文鏈接:https://blog.csdn.net/mykge/article/details/42918841

編輯:何安

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7605

    瀏覽量

    137005
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1945

    瀏覽量

    34777
收藏 人收藏

    評論

    相關(guān)推薦

    C#操作AP

    。Static修飾符則聲明一靜態(tài)元素,而這個元素屬于類型本身而不是上面指定的對象。extern則表示這個方法將在工程外部執(zhí)行,使用DllImport導入的方法必須使用extern修飾符
    發(fā)表于 12-26 12:23

    Python與C#對比

    生命周期可以分為編譯時、鏈接時、加載時、運行時,這4階段。在Python,這4階段是一體的,而在C#卻是嚴格分離的,在
    發(fā)表于 05-14 17:14

    “無注冊”修飾符如何防止變量被保存到CPU寄存器?

    好的,我的意思是,我希望真正的內(nèi)存位置(無論是全局的還是本地的,不是基于堆棧的,變量)都要更新,所以當中斷發(fā)生時,它會找到一更新的值。我知道“寄存器”修飾符,但它正好相反。F我想做什么,我在文檔
    發(fā)表于 10-09 11:09

    請問C++代碼的修飾符該怎么理解?

    有如下的代碼段,寫出下面除了宏定義外的其他代碼的真實代碼(即預處理后的代碼)。然后寫出對const的修飾符的理解(當前的代碼用于單片機):#define DECL_PC_CMD_FUN(name
    發(fā)表于 11-11 04:35

    請問什么是正則表達式修飾符?

    什么是正則表達式的修飾符?
    發(fā)表于 11-04 06:10

    labview連接mongdb問題,找到不.NET類

    有沒有人用labview連接mongodb數(shù)據(jù)庫的?已下載mongodb的c#驅(qū)動,利用labview的.net控件調(diào)用相關(guān)函數(shù),但是驅(qū)動中有部分函數(shù)在
    發(fā)表于 04-08 13:38

    HAL庫__weak修飾符是什么?

    單片機系統(tǒng)時鐘是什么?HAL庫__weak修飾符是什么?
    發(fā)表于 02-23 07:32

    C語言類型修飾符Const的教程使用說明

    Const也是應該廣泛的關(guān)鍵字,表示后面定義有可能是一不變的常量,但是跟各種數(shù)據(jù)類型定義組合,能演變出復雜含義。常類型是指使用類型修飾符const說明的類型,常類型的變量或?qū)ο蟮闹凳遣荒鼙桓?/div>
    的頭像 發(fā)表于 09-20 09:37 ?3116次閱讀

    C語言類型修飾符Volatile的使用說明

    C語言是我們經(jīng)常需要用到的語言,C語言中的類型修飾符Volatile大家知道怎么使用嗎? volatile是一類型修飾符(type spe
    的頭像 發(fā)表于 09-19 10:54 ?3553次閱讀

    C51單片機中斷函數(shù)的修飾方法

    C51斷函數(shù)必須通過該修飾符進行修飾。在C51程序設(shè)計,當函數(shù)定義時用了interruptm
    發(fā)表于 03-18 14:20 ?2731次閱讀
    <b class='flag-5'>C</b>51單片機中斷函數(shù)的<b class='flag-5'>修飾</b>方法

    一種修飾符能使變量在處理器復位而不被初始化

    有一種修飾符能使變量在處理器復位而不被初始化
    的頭像 發(fā)表于 03-14 15:01 ?4049次閱讀
    一種<b class='flag-5'>修飾符</b>能使變量在處理器復位而不被初始化

    Vue入門之事件操作

    事件修飾符 vue 通過事件修飾符對js事件進行細節(jié)控制。
    的頭像 發(fā)表于 02-06 16:26 ?707次閱讀
    Vue入門之事件操作

    Java四種訪問修飾符及訪問范圍

    public修飾的類、類屬變量及方法,包內(nèi)及包外的任何類均可以訪問;任何情況下都可以訪問;如果一類、類屬變量及方法沒有用任何修飾符,則其訪問權(quán)限為默認權(quán)限,只認包。同包下可以訪問,同包下子類可以訪問,只要不同包,普通類和子類都
    的頭像 發(fā)表于 02-28 14:35 ?6659次閱讀

    java內(nèi)部類可以用public修飾

    使用任意訪問權(quán)限修飾符,包括public、protected、默認和private。 方法內(nèi)部類只能使用默認訪問權(quán)限,即不加任何訪問修飾符。 使用public修飾的內(nèi)部類 內(nèi)部類使用public
    的頭像 發(fā)表于 11-21 10:23 ?1218次閱讀

    淺析C語言中的變量修飾符

    一、修飾符類型51單片機采用哈佛結(jié)構(gòu)。內(nèi)存空間編址有重疊??梢栽诓煌偩€上定義不同的變量。在KEILC51定義了data、idata、xdata、code幾種域修飾符。這些修飾符決定
    的頭像 發(fā)表于 04-15 08:10 ?702次閱讀
    淺析<b class='flag-5'>C</b>語言中的變量<b class='flag-5'>修飾符</b>