title: How to properly define class properties?
body: <p>When defining a new class within a project what is the correct/best practice for doing so? 
  In the past I have created classes such as:</p>
  
  <pre><code>  public class MyClass
    {
        public string FirstName  {get; set;}
        public string LastName  {get; set;}
    }
  </code></pre>
  
  <p>Normally I’d use a class such as this for the creation of collections within a project.</p>
  
  <p>However as I continue to learn and read more about c# sharp I see examples where classes are defined as:</p>
  
  <pre><code>    class MyClass //not set to public
      {
          private string  _firstName; //first defined as fields
          private string _lastName;
  
          public string FirstName  // then defined as properties 
          {
              get { return  _firstName; }
              set { _firstName = value; }
          }
          public string LastName
          {
              get { return _lastName; }
              set { _lastName = value; }
          }
      }
  </code></pre>
  
  <p>Is the first approach incorrect in definition or is this an accepted shorthand version within C#?  As a best practice should you always first define the class with private fields and then define them as properties using get / set to a value?</p>
  
  <p>I ask because I am self taught in C# and I am trying to improve and well as better understand the proper approach to development  and some samples and tutorials out there simply state approaches without a solid explanation as to why one approach is preferred (or should be done) over the other.</p>
  
  <p>Thanks in advance</p>