That classic question: List<T> or IEnumerable<T> in C#?
Straight to the point:
IEnumerable<T>: when you only need forward iteration. It also works with deferred execution, the basis of LINQ and ideal for handling large amounts of data without loading everything into memory.ICollection<T>: in addition to iteration, it allows you to add, remove, and count items, but without index access.IList<T>: includes everything fromICollection<T>, plus index-based access and the ability to insert/remove at specific positions.List<T>: the concrete implementation ofIList<T>, the class you usually use to instantiate a list.
Why does this matter?
Whenever possible, use the minimal required interface. Clear contracts reduce coupling and make your code more flexible and easier to maintain.
👉 Adapted from my original post on LinkedIn .
