2010-04-28 3 views
1

Запись библиотеки MSDN для Enumerable.ElementAt(TSource) метода говоритпроизводительности методы расширения LINQ ElementAt

«Если тип источника реализует 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

Тип переменной сам не имеет никакого отношения к методу ElementAt - насколько это касается, это только объявлен как IEnumerable<T>, потому что это то, что тип параметра. (Оба вызова будут привязаны к одному и тому же методу расширения.)

Это тип времени выполнения объекта, который протестирован в ElementAt.

0

Нет, почему разница должна быть. ElementAt() - метод расширения для IEnumerable<T>. В этом случае полиморфизма нет.

Смежные вопросы