what are the benefits of using base types in method parameters?
Here\'s one sample:
private void Foo(List numbers) //R# laments: paramete
It's the Liskov Substitution principle
Using base types for parameters has the following benefits:
However, you shouldn't always us a base type in a method call just because a tool like ReSharper says it is possible. You should make sure that the usage and semantics of the methods are clear - and that future changes are not likely to require moving down the inheritance hierarchy - potentially breaking existing code.
In your examples above, using IEnumerable instead of List makes it possible for callers of your code to pass in not just List objects but also arrays, Stacks, Queues, and even results from LINQ calls (which primarily return IEnumerable). Since your code only iterates over the collection, it doesn't need to know about List. It also means that consumers of your code won't have to convert their collections into copies of type List just to pass them to your method.