2 回答

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

TA貢獻1812條經驗 獲得超5個贊
后果(哪里出了問題)
雖然我都輸入了(using)
System.Collections.Generic
和
System.Collections.Specialized,
我不知道這些命名空間部分繼承的類實際上在中System.Collections。我以為我要得到兩半蛋糕,而我卻得到兩個餡而又沒有外殼。
因此,例如,當我嘗試使用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){
...
}
可能會為您服務。
雖然,對于我上面概述的情況,
public static T[] selectAll<T>(this IEnumerable<object> list, string property){
...
}
效果也一樣(而未IList<object>注冊為擴展名List<?>
空間和概念的命名可能會引起誤解:
我會認為IList<Type>是專門的(按類型)和IList泛型的(因為它適用于所有<Type>s)-但是在C#世界中,這是相反的:IList本身被認為是“非泛型的”-泛型的問題...內在性是從外部(在上下文中如何處理)而不是從內部(它包含(或可以包含)什么)來處理-像我這樣的高級程序員可能會直覺上出錯。
總之:
System.Collections包含的不僅是其類的總和
直觀地將泛型集合稱為非泛型集合,因為這樣說的是較低級別的能力
System.Collections.IEnumerable
似乎適用于各種列表閱讀官方文檔通常很有用。(等等...一般還是專門?哦,誰知道了:P)
- 2 回答
- 0 關注
- 277 瀏覽
添加回答
舉報