title: Why can I create a class named "var"?
body: <p>Isn't <code>var</code> a keyword in C#? But why can I do this:</p>
  
  <pre><code>public class var { }
  
  public class main
  {
      public static void main(string[] args)
      {
          var testVar = new var();
      }
  }
  </code></pre>
  
  <p>The <code>var</code> that is used in the code is the <code>var</code> class that is declared before the <code>main</code> class. And the compiler doesn't even complain.</p>
  
  <p>While when I do this:</p>
  
  <pre><code>public class int { }
  </code></pre>
  
  <p>or this:</p>
  
  <pre><code>public class true { }
  </code></pre>
  
  <p>The compiler said that <code>int</code> or <code>true</code> is a keyword and cannot be used like that. Why is it not the same with <code>var</code>?</p>