title: Why can I call this static method using the class name but not using a class instance?
body: <pre class="lang-cs prettyprint-override"><code>class Program
  {
      static void Main(string[] args)
      {
          var p = new Program();
          p.Main(args);//instance reference error,use type name instead
  
          var p = new Program();
          Program.Main(args);//error disappears
      }
  }
  </code></pre>
  
  <p>I think I understand that statics are not associated with object instances, but what I'm having trouble with is aren't classes synonymous with objects?  Or aren't classes used in creating objects?  So why does the error disappear when I use the class name if classes are essentially objects?</p>
  
  <p>I get that I haven't yet created an instance of <code>Main</code> and won't be.  Is that the only thing that makes the difference?  Maybe it's just not being explained properly in this class I'm taking.</p>