Какой метод работает лучше: .Any () vs .Count () > 0?

вы должны использовать отражение .... ( код «заимствован» из этого url )

using System.Reflection;  // reflection namespace

// get all public static properties of MyClass type
PropertyInfo[] propertyInfos;
propertyInfos = typeof(MyClass).GetProperties(BindingFlags.Public |
                                              BindingFlags.Static);
// sort properties by name
Array.Sort(propertyInfos,
        delegate(PropertyInfo propertyInfo1, PropertyInfo propertyInfo2)
        { return propertyInfo1.Name.CompareTo(propertyInfo2.Name); });

// write property names
foreach (PropertyInfo propertyInfo in propertyInfos)
{
  Console.WriteLine(propertyInfo.Name);
}

541
задан Pure.Krome 20 November 2008 в 12:56
поделиться

1 ответ

Если Вы запустите с чего-то, что имеет .Length или .Count (такой как ICollection<T>, IList<T>, List<T>, и т.д.) то - тогда это будет самой быстрой опцией, так как она не должна проходить GetEnumerator() / MoveNext() / Dispose() последовательность, требуемая Any() для проверки на непустое IEnumerable<T> последовательность.

всего Для IEnumerable<T>, тогда Any() будет обычно быть более быстрым, поскольку это только должно посмотреть на одно повторение. Однако обратите внимание, что реализация LINQ к объектам [1 112] действительно проверяет на [1 113] (использование .Count как оптимизация) - поэтому, если Ваш базовый источник данных будет непосредственно список/набор, не будет огромной разницы. Не спрашивайте меня, почему это не использует недженерика ICollection...

, Конечно, при использовании LINQ для фильтрации его и т.д. (Where и т.д.), у Вас будет основанная на блоке итератора последовательность, и таким образом, этот ICollection<T> оптимизация будет бесполезна.

В целом с [1 118]: палка с [1 119];-p

670
ответ дан Marc Gravell 20 November 2008 в 12:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: