如何访问自动实现属性的支持变量?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

在过去,我们声明了这样的属性:

public class MyClass
{
    private int _age;

    public int Age
    {
          get{ return _age;  }
          set{ _age = value; }
    }
}

现在我们可以:

public class MyClass
{
    public int Age {get; set;} 
}

我的问题是,如何访问使用此表示法自动创建的私有变量?

我更愿意访问私有变量,而不是公共访问者的“年龄”。是否存在访问私有变量的默认表示法,或者说这是不可能的?

提问于
用户回答回答于

自动属性的使用意味着您不需要任何获取/设置属性的逻辑,因此不需要使用私有支持变量。

如果类中有任何复杂的逻辑,请不要使用自动属性。

public class TempMessage {
    public int FromID { get; set; }
    public int ToID { get; set; }
    public string Message { get; set; }
}
用户回答回答于

如果您想访问这些属性使用的私有成员,这通常是出于以下几个原因:

  • 您需要的不仅仅是一个简单的get/set--在这种情况下,您应该避免对这个成员使用自动属性。
  • 您希望避免通过GET或SET直接使用成员的性能影响--在这种情况下,如果真的出现性能问题,我会感到惊讶。简单的GET/SET成员非常容易内联,在我的测试中(诚然是有限的),我还没有发现使用自动属性和直接访问成员之间的区别。
  • 您只希望拥有公共读取访问权限(即“get”)和类直接写入成员--在这种情况下,您可以在自动属性中使用私有集。 公共类MyClass{公共int年龄{GET;私有集;}

public class MyClass

{ public int Age {get; private set;}

}

扫码关注云+社区