Який "найкращий" (враховуючи швидкість і читабельність) спосіб визначити, чи список порожній? Навіть якщо список має тип 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();
}
list.Any()
рівнозначно list.IsEmpty
? Рамковий метод повинен бути оптимізований - варто написати новий лише в тому випадку, якщо ви зрозуміли, що це вузьке вузьке місце.
IsEmpty
метод розширення. github.com/dotnet/corefx/issues/35054 Будь ласка, перевірте та проголосуйте, якщо вам подобається та згодне.
is
іcast
але використанняas
іnull
перевірити:ICollection<T> collection = list as ICollection<T>; if (collection != null) return colllection.Count;