title: I'm not understanding the usage of C# get; set; seems to be different from Java
body: <p>I know there are a few questions on stack overflow on this already but I haven't found any that answer my specific question. I came from a java development background and never bothered using the get; set; methods from C# until now.</p>
  
  <p>I have the following code</p>
  
  <pre><code>class Test
  {
      public int test { get; set; }
  }
  </code></pre>
  
  <p>In my main function I can declare a new Test and use <code>t.Test = 5</code> and that works fine; however, when I switch the <code>public</code> to <code>private</code> I cannot access my get; and set; methods anymore... BUT when I use (Similar method to Java)</p>
  
  <pre><code>class Test
  {
      private int test;
  
      public int getTest()
      {
          return this.test;
      }
  
      public void setTest(int test)
      {
          this.test = test;
      }
  }
  </code></pre>
  
  <p>I'm confused on the design philosophy. In C# should I no longer be using private variables (Only make it private if it's used internally in the class) and make them all public and use private get; private set; to control accessibility? </p>