title: 'Don't expose generic list', why to use collection<T> instead of list<T> in method parameter
body: <p>I am using FxCop and it shows warning for "Don't expose generic list" which suggests use <code>Collection&lt;T&gt;</code> instead of <code>List&lt;T&gt;</code>. The reason why it is preferred, I know all that stuff, as mentioned in <a href="https://stackoverflow.com/questions/6473721/why-doesnt-fxcop-rule-ca1002-do-not-expose-generic-lists-recommend-to-use-il">this SO post</a> and <a href="http://blogs.msdn.com/b/codeanalysis/archive/2006/04/27/585476.aspx" rel="nofollow noreferrer">MSDN</a> and many more articles I have been through. </p>
  
  <p>But my question is this, I am having few methods which does so much heavy calculation and methods accepts parameters of <code>List&lt;T&gt;</code> which is supposed to  be faster and good in terms of performance. But FxCop issues warning for this as well as. So one option is that I should declare the parameter as <code>Collection&lt;T&gt;</code>, then use <code>ToList()</code> inside the method and then use it.</p>
  
  <h2>So which one is optimized?</h2>
  
  <p>"Suppress the warning for this case" <strong>OR</strong> "use <code>Collection&lt;T&gt;</code> in parameter and then use <code>ToList()</code> inside the method itself".</p>