title: C# 3.0 auto-properties — useful or not?
body: <p><em>Note: This was posted when I was starting out C#. With 2014 knowledge, I can truly say that auto-properties are among the best things that ever happened to the C# language.</em></p>
  
  <p>I am used to create my properties in C# using a private and a public field:</p>
  
  <pre><code>private string title;
  public string Title
  {
      get { return title;  }
      set { title = value;  }
  }
  </code></pre>
  
  <p>Now, with <a href="http://en.wikipedia.org/wiki/.NET_Framework" rel="noreferrer">.NET</a> 3.0, we got auto-properties:</p>
  
  <pre><code>public string Title { get; set; }
  </code></pre>
  
  <p>I know this is more a philosophical/subjective questions, but is there any reason to use these auto-properties except from saving five lines of code for each field? My personal gripe is that those properties are hiding stuff from me, and I am not a big fan of black magic.</p>
  
  <p>In fact, the hidden private field does not even show up in the debugger, which is OK given the fact that the get/set functions do nothing. But when I want to actually implement some getter/setter logic, I have to use the private/public pair anyway.</p>
  
  <p>I see the benefit that I save a lot of code (one vs six lines) without losing the ability to change the getter/setter logic later, but then again I can already do that by simply declaring a public field "Public string Title" without the need of the { get; set; } block, thus even saving more code.</p>
  
  <p>So, what am I missing here? Why would anyone actually want to use auto-properties?</p>