title: Instantiating the class that contains static void Main()
body: <p>I am reviewing a co-worker's C# console app, and I see this snippet:</p>
  
  <pre><code>class Program
  {
      static void Main(string[] args)
      {
          Program p = new Program();
          p.RealMain();
      }
  
      ... non-static RealMain function
  }
  </code></pre>
  
  <p>Presumably, he's doing this because he wants to have instance-level fields, etc.  </p>
  
  <p>I haven't seen this before, but this style bugs me.  Is it a common and accepted practice?</p>