If a class, say Collection<T>
implements IList<T>
, and you would go to the definition in Visual Studio, it will show you all interfaces that Collection<T>
implements. If Collection<T>
implements IList<T>
, it will also implement ICollection<T>
and IEnumerable because
IList<T> : ICollection<T>
and
ICollection<T> : IEnumerable<T>
etc.
In otherwords, if I write
interface IFoo : IBar, IBaz {}
interface IBar {}
interface IBaz {}
class Foobar : IFoo {}
Then Visual Studio will give me:
Foobar : IFoo, IBar, IBaz {...} (from metadata).
If I implement IFoo
, I must also implement IBar
because IFoo
extends IBar
, thus it makes sense to show that Foobar
also implement IBar
and IBaz
(otherwise I'd only see IFoo
, and would have to navigate to IFoo
to see IBar
etc.)