Какой самый лучший (с учетом скорости и читабельности) способ определения, является ли список пустым? Даже если список имеет тип IEnumerable<T>
и не имеет свойства Count.
Прямо сейчас я перебираю это:
if (myList.Count() == 0) { ... }
и это:
if (!myList.Any()) { ... }
Я предполагаю, что второй вариант быстрее, так как он вернется с результатом, как только увидит первый элемент, тогда как второй вариант (для IEnumerable) должен будет посетить каждый элемент, чтобы вернуть счетчик .
При этом второй вариант выглядит для вас читабельным? Что бы вы предпочли? Или вы можете придумать лучший способ проверить пустой список?
Редактировать @ lassevk кажется наиболее логичным, в сочетании с небольшой проверкой во время выполнения для использования кэшированного подсчета, если это возможно, например,
public static bool IsEmpty<T>(this IEnumerable<T> list)
{
if (list is ICollection<T>) return ((ICollection<T>)list).Count == 0;
return !list.Any();
}