title: Should I favour IEnumerable<T> or Arrays?
body: <p>In many projects I work on, whenever I have to return a read only collection, I use the <code>IEnumerable&lt;T&gt;</code> interface and make it type specific like so:</p>
  
  <pre><code>Public ReadOnly Property GetValues() As IEnumerable(Of Integer)
      Get
          'code to return the values'
      End Get
  End Property
  </code></pre>
  
  <p>Most of the time, I return a List but in some functions and read only properties I return an array which also serves the purpose alright by kind courtesy of Extension Methods.</p>
  
  <p>My question is <em>am I violating any design principles by returning <code>IEnumerable&lt;T&gt;</code>s instead of specific types (e.g.: <code>List&lt;T&gt;</code>, <code>HashSet&lt;T&gt;</code>, <code>Stack&lt;T&gt;</code> or <code>Array</code>s)</em>?</p>