3 回答

TA貢獻(xiàn)1868條經(jīng)驗 獲得超4個贊
CLR具有兩種不同類型的數(shù)組:保證為一維且下界為0的向量,以及更通用的數(shù)組,其可以具有非零界限且秩為非0。
根據(jù)CLI規(guī)范的8.9.1節(jié):
此外,創(chuàng)建的元素類型為T的向量將實現(xiàn)接口 System.Collections.Generic.IList<U> (§8.7),其中U:=T。
我不得不說這對我來說似乎很奇怪。鑒于它已經(jīng)實現(xiàn),IEnumerable我不知道為什么不應(yīng)該實現(xiàn)IEnumerable<T>。實施起來沒有多大意義IList<T>,但是簡單的通用接口就可以了。
如果需要,可以調(diào)用Cast<T>(如果使用的是.NET 3.5),也可以編寫自己的方法來遍歷數(shù)組。為了避免強(qiáng)制轉(zhuǎn)換,您必須編寫自己的方法,該方法可以找到每個維度的上下邊界,并以這種方式獲取內(nèi)容。不太愉快。

TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊
有一種解決方法:您可以將任何多維數(shù)組轉(zhuǎn)換為IEnumerable
public static class ArrayExtensions
{
public static IEnumerable<T> ToEnumerable<T>(this Array target)
{
foreach (var item in target)
yield return (T)item;
}
}
- 3 回答
- 0 關(guān)注
- 665 瀏覽
添加回答
舉報