1
ただの簡単な質問です。CountはIEnumerableを認識します
IEnumerableがカウントされますか?メソッドが収穫されていると言っていますが、それを理解していて、そのメソッドが列挙されるまではまだ立っていますが、カウントにカウントする必要があります。
ただの簡単な質問です。CountはIEnumerableを認識します
IEnumerableがカウントされますか?メソッドが収穫されていると言っていますが、それを理解していて、そのメソッドが列挙されるまではまだ立っていますが、カウントにカウントする必要があります。
はい。 IEnumerable
.Count
のソースは次のとおりです。
public static int Count<TSource>(this IEnumerable<TSource> source) {
if (source == null) throw Error.ArgumentNull("source");
ICollection<TSource> collectionoft = source as ICollection<TSource>;
if (collectionoft != null) return collectionoft.Count;
ICollection collection = source as ICollection;
if (collection != null) return collection.Count;
int count = 0;
using (IEnumerator<TSource> e = source.GetEnumerator()) {
checked {
while (e.MoveNext()) count++;
}
}
return count;
}
(source)
IEnumerable
がカウントの「魔法」の方法を持ってICollection
に実際にキャスト可能である場合には、それは代わりに、反復のことを使用します。
私はそれをToListの代わりに使うことができますか? –
とそれはカウントalittlebit怖い:P –
あなたが日常的に使用するほとんどのコレクションは、ICollectionを実装しているため、より速くカウントを得る方法があります。しかし、* Count()* Just *のようなLinqの拡張は、速い方法を見つけようとしていることを知っていることを常に知っておいてください。もし存在しなければ、すべてを繰り返すことになります。 –