TommyCarlier said:
One thing I sometimes miss is an interface between IEnumerable<T> and ICollection<T> that represents a read-only collection (implements IEnumerable<T>) with a Count-property. Something like this:
public interface IReadOnlyCollection<T>
: IEnumerable<T>
{
int Count { get; }
}
Of course, thanks to the magic of extension methods, IEnumerable now effectively
does have a Count method. I pointed Reflector at the implementation: As you might expect, if the source implements ICollection, then ICollection.Count is returned.
Otherwise it enumerates over the collection, incrementing a counter along the way.