作为一名新的.NET 3.5程序员,我开始学习LINQ,我发现了一些非常基本的东西,我之前没有注意到:
本书声称每个数组实现IEnumerable<T>(显然,否则我们不能使用LINQ到数组上的对象......).当我看到这个时,我心里想,我从未真正想过这个,我问自己所有数组实现了什么 - 所以我检查了
System.Array使用对象浏览器(因为它是CLR中每个数组的基类),并且我很惊讶,它没有实现IEnumerable<T>.
所以我的问题是:定义在哪里?我的意思是,我怎么能准确地告诉每个阵列实现哪些接口?
这可能是一个广泛的问题,但这是我不太清楚和非常好奇的事情.
通常,对于某些问题,我听到的原因是因为Generics在.NET 1.0中不可用.这让我想到以下两件事之一:
之前没有想到泛型,所以开发人员在.NET 1.0之后提出它可能会极大地影响C#和.NET的设计,但由于已做出的决定(向后兼容性)而无法实现.
泛型从一开始就一直在计划中,因此不使用.NET 1.0发布它的唯一问题是无法在2.0之前使用它.但除此之外,没有引入或错误的冗余功能,提出了不可逆转的决定.
我大多假设#1,但实际情况是#2?