Auto-implemented properties were introduced in C# 3.0 to make developers lives simpler by avoiding default implementation of properties.

Let's say, we create a public property called Model. The default implementation of the property looks like Listing 1.

public partial class Car
{
private string model;

public string Model
{
get { return model; }
set { model = value; }
}
}

Listing 1

The same code can be replaced with Listing 2.

public string Model { get; set; }

Listing 2

Listing 2 is automatic implemented property example. You must implement both getter and setter on a property. The auto-implemented properties code basically tell compiler that this property is default property implementation and compiler writes code that is needed to do exactly same what Listing 1 does.

So you would think what do you need the automatic properties? Well, they make your code look cleaner and faster.

If you want to learn more about properties in C#, here are couple of great articles: