title: Why does typeof(System.Enum).IsEnum = false?
body: <p>As we know <a href="http://msdn.microsoft.com/en-us/library/system.enum%28v=vs.110%29.aspx">System.Enum</a> is a base for all enums, but I wonder why reflection says that it is not enum itself?</p>
  
  <pre><code>Console.WriteLine(typeof(System.Enum).IsEnum) // says it is false
  </code></pre>
  
  <p>I can't understand the logic, so System.Enum is not enum, but everything that derived from it is enum?</p>
  
  <p>I had a second shock when I saw in <a href="http://msdn.microsoft.com/en-us/library/system.enum%28v=vs.110%29.aspx">msdn</a> that it is a class</p>
  
  <pre><code>public abstract class Enum : ValueType, 
      IComparable, IFormattable, IConvertible
  </code></pre>
  
  <p>So Enum is a class, however it is value type (derived from special <code>ValueType</code> class, which make enum as value type) and is base for all enums, but is not an enum itself :)</p>
  
  <p>Well, if you don't believe that Enum is class, check <code>typeof(System.Enum).IsClass</code></p>
  
  <p>The question is: are there any reason why <code>IsEnum</code> is false and <code>IsClass</code> is true for a type which is value type and is base for all enums?</p>
  
  <pre><code>enum AAA { }
  typeof(System.Enum).IsClass //True
  typeof(System.Enum).IsEnum  //False
  typeof(AAA).IsClass         //False
  typeof(AAA).IsEnum          //True
  typeof(AAA).BaseType        //System.Enum
  </code></pre>