リストが空であるかどうかを判断するための「最良の」(速度と読みやすさの両方を考慮した)方法は何ですか?リストがタイプIEnumerable<T>
であり、Countプロパティがない場合でも。
今、私はこれの間で投げています:
if (myList.Count() == 0) { ... }
この:
if (!myList.Any()) { ... }
私の推測では、2番目のオプションは、最初のアイテムが表示されるとすぐに結果が返されるため、より高速ですが、2番目のオプション(IEnumerableの場合)は、カウントを返すためにすべてのアイテムにアクセスする必要があります。
そうは言っても、2番目のオプションはあなたにとって読みやすいように見えますか?どちらがいいですか?または、空のリストをテストするためのより良い方法を考えられますか?
@lassevkの応答を編集するのが最も論理的であるように思われ、可能であればキャッシュされたカウントを使用するためのランタイムチェックを少し組み合わせて次のようにします。
public static bool IsEmpty<T>(this IEnumerable<T> list)
{
if (list is ICollection<T>) return ((ICollection<T>)list).Count == 0;
return !list.Any();
}