2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個贊
像你看起來是在尋找非通用版本的參數(shù)-無論是IList或IEnumerable將工作
public static T[] selectAll<T>(this IList list, string property){
...
}

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個贊
后果(哪里出了問題)
雖然我都輸入了(using)
System.Collections.Generic
和
System.Collections.Specialized,
我不知道這些命名空間部分繼承的類實(shí)際上在中System.Collections。我以為我要得到兩半蛋糕,而我卻得到兩個餡而又沒有外殼。
因此,例如,當(dāng)我嘗試使用IEnumerable時,我親愛且可信賴的IDE(Visual Studio 2017)在沒有Type指示器的情況下不會接受它。
對于通過Google遇到同樣問題的任何人:
同時使用這兩種方法.Generic并.Specialized不會覆蓋您,集合類型的很多借鑒都來自父級System.Collections。
public static T[] selectAll<T>(this IList list, string property){
...
}
和
public static T[] selectAll<T>(this IEnnumerable list, string property){
...
}
可能會為您服務(wù)。
雖然,對于我上面概述的情況,
public static T[] selectAll<T>(this IEnumerable<object> list, string property){
...
}
效果也一樣(而未IList<object>注冊為擴(kuò)展名List<?>
空間和概念的命名可能會引起誤解:
我會認(rèn)為IList<Type>是專門的(按類型)和IList泛型的(因?yàn)樗m用于所有<Type>s)-但是在C#世界中,這是相反的:IList本身被認(rèn)為是“非泛型的”-泛型的問題...內(nèi)在性是從外部(在上下文中如何處理)而不是從內(nèi)部(它包含(或可以包含)什么)來處理-像我這樣的高級程序員可能會直覺上出錯。
總之:
System.Collections包含的不僅是其類的總和
直觀地將泛型集合稱為非泛型集合,因?yàn)檫@樣說的是較低級別的能力
System.Collections.IEnumerable
似乎適用于各種列表閱讀官方文檔通常很有用。(等等...一般還是專門?哦,誰知道了:P)
- 2 回答
- 0 關(guān)注
- 273 瀏覽
添加回答
舉報