国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C#:關(guān)于C#4中IEnumerable<out T>的理解

2019-11-17 02:46:37
字體:
供稿:網(wǎng)友

C#:關(guān)于C#4中IEnumerable<out T>的理解

IEnumerable<out T>這個接口非常常見,它是最基礎(chǔ)的泛型集合接口,表示可迭代的項的序列。

但是奇怪的是為什么泛型參數(shù)要帶一個“out”?

經(jīng)過一番資料查閱后,發(fā)現(xiàn)此“out”和C#中的“out”類型參數(shù)的“out”并非一個意思。

IEnumerable<out T>中的out表示這個接口支持“協(xié)變性”。

何謂“協(xié)變性”?

簡單的理解就是“T”可以變化為T的基類型。說了這么多,感覺還是很抽象,用一段代碼表示吧。

IEnumerable<int> collection1 = new List<string>();IEnumerable<object> collection2 = collection1;

在C#4.0之前,由于IEnumerable<T>的聲明并未包含“out”關(guān)鍵字,所以上面的代碼是無法通過編譯的,編譯器會告知你類型轉(zhuǎn)換失敗,因為collection2對應(yīng)的類型為IEnumerable<object>,而collection1對應(yīng)的類型為IEnumerable<int>。其實這個問題并不是多么深刻,因為現(xiàn)在絕大部分C#開發(fā)者用的都是C# 5,就會很“理所當(dāng)然”的覺得collection1可以轉(zhuǎn)化為collection2。我也是,直至查閱資料研究“out”這個關(guān)鍵字才發(fā)現(xiàn)之所以可以實現(xiàn)這樣轉(zhuǎn)換的原因。

轉(zhuǎn)載聲明:本文轉(zhuǎn)載自http://www.zhoumy.cn/?id=5

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 叙永县| 富顺县| 丰宁| 怀柔区| 丰县| 耒阳市| 大田县| 固原市| 哈尔滨市| 华亭县| 大关县| 五常市| 惠水县| 循化| 沾益县| 平利县| 博客| 潜江市| 漯河市| 建宁县| 潞城市| 五常市| 商丘市| 临漳县| 屏东县| 洛阳市| 新邵县| 合作市| 扬中市| 聊城市| 长宁县| 奉节县| 宁南县| 内江市| 揭西县| 宁武县| 屯留县| 灌南县| 顺昌县| 化州市| 阳泉市|