Mcc库条目到Enumerable.ElementAt(TSource)方法说 “如果源类型实现 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 ?谢谢 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 变量本身的类型与ElementAt方法无关-就其而言,仅声明为IEnumerable<T>,因为这就是参数类型。 (两个调用都将绑定到相同的扩展方法。)这是在ElementAt中测试的对象的执行时间类型。 (adsbygoogle = window.adsbygoogle || []).push({}); 10-07 20:00