Делает ли компилятор ConcateNate LINQ, где запросы?

Рассмотрим два следующих аналогичных образца кода.

Один , где пункт.

bool validFactory
  = fields
    .Where(
      fields => field.FieldType == typeof( DependencyPropertyFactory<T> ) &&
                field.IsStatic )
    .Any();

Два , где пункты .

bool validFactory
  = fields
    .Where( field => field.FieldType == typeof( DependencyPropertyFactory<T> ) )
    .Where( field => field.IsStatic )
    .Any();

Я предпочитаю вторую, поскольку я нахожу его более читаемой, и это вызывает меньшее количество проблем форматирования, особенно при использовании автоматического форматирования. Также ясно при размещении комментариев. Отдельные условия (или даже выше), чтобы уточнить намерение.

Моя интуиция говорит, что второй кодовый образец будет менее эффективным. Я, конечно, был бы менее эффективный. Я мог бы, конечно, написать простой тест (и будет, если никто не знает ответ). На данный момент я думал, Это идеальная еда для этого.; P

  1. - это еще один эффективный, чем другой?
  2. это компилятор, достаточно умен, чтобы оптимизировать это?
5
задан Steven Jeuris 11 September 2011 в 23:50
поделиться