Possible Duplicate:
C#: Difference between List<T> and Collection<T> (CA1002, Do not expose generic lists)
The FxCop says in a rule that generic List should not be exposed to the outside world.
But I do not understand why and what is the replacement for the generice List?
Reference : http://msdn.microsoft.com/en-in/library/ms182142%28en-us%29.aspx
The reason is that the use of a concrete List<T>
is meant to be an implementation detail, and you're meant to expose something more abstract, such as IEnumerable<T>
or ICollection<T>
, that represents only the functionality you want to expose (such as being enumerable, mutable and/or indexable). This gives you flexibility to change the implementation later on.
In practice, this warning is often resolved by returning IList<T>
instead of List<T>
, but the idea is to prompt you to think about "what functionality do I actually need to guarantee my callers?" E.g. maybe I should be returning IEnumerable<T>
or ReadOnlyCollection<T>
because I don't want my callers messing with the returned collection.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With