1

Enumerable.ElementAt(TSource)Method的 MSDN 库条目说

“如果源的类型实现了IList,则该实现用于获取指定索引处的元素。否则,此方法获取指定元素。”

假设我们有以下示例:

        ICollection<int> col = new List<int>() { /* fill with items */ };
        IList<int> list = new List<int>() { /* fill with items */ };

        col.ElementAt(10000000);
        list.ElementAt(10000000);

执行上有区别吗?或者 ElementAt 是否承认它col也实现了 IList<>,尽管它只声明为 ICollection<>?

谢谢

4

2 回答 2

4

变量本身的类型与方法无关ElementAt——就而言,它只声明为IEnumerable<T>,因为这就是参数类型。(这两个调用都将绑定到相同的扩展方法。)

它是在 中测试的对象的执行时类型ElementAt

于 2010-04-28T15:26:15.840 回答
0

不,为什么应该有区别。ElementAt()是 的扩展方法IEnumerable<T>。在这种情况下不存在多态性。

于 2010-04-28T15:28:21.707 回答