title: What exactly is a "Special Class"?
body: <p>After failing to get something like the following to compile:</p>
  
  <pre><code>public class Gen&lt;T&gt; where T : System.Array
  {
  }
  </code></pre>
  
  <p>with the error</p>
  
  <blockquote>
    <p>A constraint cannot be special class `System.Array'</p>
  </blockquote>
  
  <p>I started wondering, what exactly <em>is</em> a "special class"?</p>
  
  <p>People often seem to get the same kind of error when they specify <code>System.Enum</code> in a generic constraint. I got the same results with <code>System.Object</code>, <code>System.Delegate</code>, <code>System.MulticastDelegate</code> and <code>System.ValueType</code> too.</p>
  
  <p>Are there more of them? I cannot find any info on "special classes" in C#.</p>
  
  <p>Also, what <em>is</em> so special about those classes that we can't use them as a generic type constraint?</p>