Лучше использовать статический Enumerable FirstOrDefault поверх метода объекта?

1

Пока я работал над некоторым кодом, у Resharper было "предложение" использовать статический Enumberable.FirstOrDefault():

Первоначально код был похож на этот:

var myCountry = myCountryRepository.GetByCode(code); // returns IEnumerable of Country
Country country = myCountry.FirstOrDefault();

Предложение изменило последнюю строку:

Country country = Enumerable.FirstOrDefault(myCountry);

Существует ли увеличение производительности при использовании статического метода?

  • 2
    Нет, это одно и то же. Решарпер просто дает вам возможность. Теперь он будет «предлагать» вам изменить его обратно. Так же, как это скажет вам, что var может быть изменен на явный тип и наоборот.
  • 0
    Какая версия ReSharper это делает? Я не могу найти чек в настройках моей установки 8.2.
Показать ещё 5 комментариев
Теги:
linq
performance

1 ответ

3
Лучший ответ

Нет, нет увеличения производительности: два вызова абсолютно идентичны. Когда вы пишете

Country country = myCountry.FirstOrDefault();

компилятор распознает, что вы вызываете метод расширения, и спокойно конвертирует его в это:

Country country = Enumerable.FirstOrDefault(myCountry);
  • 0
    myCountry.FirstOrDefault () - FirstOrDefault - это метод расширения пространства имен System.Linq. Посмотрите на синтаксис для создания методов расширения: msdn.microsoft.com/en-us/library/bb383977.aspx

Ещё вопросы

Сообщество Overcoder
Наверх
Меню