title: Why SomethingCollection is used instead of Collection<Something>?
body: <p>In .NET Framework, there are some classes which use <code>SomethingCollection</code> syntax.</p>
  
  <p>For example, when dealing with <code>SqlCommand</code>, it has a parameter <code>Parameters</code> of type <code>SqlParameterCollection</code>. Since it does not have a form of <code>IEnumerable&lt;SqlParameter&gt;</code> (or <code>IList&lt;SqlParameter&gt;</code> or something similar), it is impossible to write:</p>
  
  <pre><code>foreach (var c in sqlCommand.Parameters)
  {
      Debug.WriteLine(string.Concat(c.ParameterName, ": ", c.Value));
  }
  </code></pre>
  
  <p>Instead, <code>var</code> must be replaced by an explicit <code>SqlParameter</code>.</p>
  
  <p>The thing is very similar when dealing with Windows Forms controls (collections of listview items, etc.), and exists in other classes.</p>
  
  <p>What is this thing? Why such classes exist and are used instead of generic <code>IEnumerable</code>s/<code>IList</code>s?</p>