title: IEnumerable<T> vs. Array
body: <p>I'm trying to get the idea, <strong>what would be the best way to publish a Readonly List of objects as a public method</strong>?
  From <a href="http://blogs.msdn.com/b/ericlippert/archive/2008/09/22/arrays-considered-somewhat-harmful.aspx" rel="nofollow noreferrer">Eric Lippert's Blog</a>, Arrays are kinda bad, because someone could easily add a new Entry. So one would have to pass a new Array every time the method is called.
  He suggests, to pass <code>IEnumerable&lt;T&gt;</code>, since this is <em>per definition read only (no add, remove methods)</em>, which I practiced for quite sometime.
  But in our new project, people even started to create Arrays of these <code>IEnumerables</code>, because they don't know the DataSource behind, so they get a : <a href="https://stackoverflow.com/questions/8240844/handling-warning-for-possible-multiple-enumeration-of-ienumerable">Handling warning for possible multiple enumeration of IEnumerable</a> </p>
  
  <p>I'm interested in a technical approach, how one would solve this puzzle. The only solution I came up so far would be to use a <code>IReadOnlyCollection</code>, but this would be way more explicit than an <code>IEnumerable</code>.</p>
  
  <p>What is best practice to publish such lists, which shouldn't be changed, but should be declared as In-Memory Lists?</p>