How can I access the backing variable of an auto-implemented property?

前端 未结 6 1977
逝去的感伤
逝去的感伤 2020-12-23 02:21

In the past we declared properties like this:

public class MyClass
{
    private int _age;

    public int Age
    {
          get{ return _age;  }
                  


        
6条回答
  •  误落风尘
    2020-12-23 02:53

    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.

提交回复
热议问题