List<string> list = new List<string>() {"a", "b", "c"};
IEnumerable<string> enumerable = list;
int c1 = list.Count;
int c2 = list.Count();
int c3 = enumerable.Count();
これらの最後の3つのステートメントの間にパフォーマンスと実装に違いはありますか? list.Count()
はlist.Count
と悪化しますか?参照のタイプがIEnumerable<string>
の場合は重要ですか?Count()(linq拡張子)とListの間に違いがありますか?
IEnumerableがListなどのICollectionであり、したがって.Countプロパティを持つ場合、Linqは.Count()メソッドを使用するときにこれをショートカットとして使用します。つまり、どちらを使用しても問題はありません。 – Dolbz
これは間違っています。 Count()は、Count()を呼び出している要素がICollection自体を実装していない場合にカウントするためにのみループするようにコーディングされています。 –