No, it's around so that a collection can return how many elements there are directly, without having to iterate over it.
Enumerable.Count()
has an optimization such that if the collection implements ICollection<T>
, it will use the property instead of iterating over the collection one element at a time, which is what you'd have to do otherwise.
It feels like a clearly useful property to me. Even if the framework were created today with LINQ in mind, I'm sure there would still be something very similar. (Admittedly I can think of various changes I'd like to see to the collection interfaces, but that's a different matter.)