The aim of the new automatic properties is to reduce the amount of boilerplate code you need to write when you just have a simple property that doesn’t need any special logic in the get or the set.
If you want to access the private member that these properties use, that’s usually for a few reasons:
- You need to more than just a simple get/set – in this case, you should just avoid using automatic properties for this member.
- You want to avoid the performance hit of going through the get or set and just use the member directly – in this case, I’d be surprised if there really was a performance hit. The simple get/set members are very very easy to inline, and in my (admittedly limited) testing I haven’t found a difference between using the automatic properties and accessing the member directly.
-
You only want to have public read access (i.e. just a ‘get’) and the class write to the member directly – in this case, you can use a private set in your automatic property. i.e.
public class MyClass { public int Age {get; private set;} }
This usually covers most the reasons for wanting to directly get to the backing field used by the automatic properties.