为了账号安全,请及时绑定邮箱和手机立即绑定

自动实现的getter和setter与公共领域

自动实现的getter和setter与公共领域

C#
临摹微笑 2019-11-30 15:08:06
我看到很多C#类的示例代码可以做到这一点:public class Point {    public int x { get; set; }    public int y { get; set; }}或者,在较旧的代码中,具有明确的私有后备值且没有新的自动实现属性的情况相同:public class Point {    private int _x;    private int _y;    public int x {        get { return _x; }        set { _x = value; }    }    public int y {        get { return _y; }        set { _y = value; }    }}我的问题是为什么。进行上述操作与仅将这些成员设置为公共字段(如下所示)之间有功能上的区别吗?public class Point {    public int x;    public int y;}明确地说,当您需要对基础数据进行一些转换时,我理解了获取方法和设置方法的价值。但是在您只是传递值的情况下,这似乎是不必要的冗长。
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

我倾向于同意(这似乎是不必要的冗长),尽管这是我们团队尚未解决的问题,因此我们的编码标准仍然坚持所有类的冗长属性。

几年前,杰夫·阿特伍德(Jeff Atwood)处理了这个问题。他回顾性指出的最重要的一点是,从字段更改为属性是代码中的重大更改。任何消耗它的东西都必须重新编译才能与新的类接口一起使用,因此,如果控件之外的任何东西正在消耗您的类,则可能会遇到问题。


查看完整回答
反对 回复 2019-11-30
?
不负相思意

TA贡献1777条经验 获得超10个赞

它封装了这些成员的设置和访问。如果从现在开始一段时间后,代码的开发人员需要在访问或设置成员时更改逻辑,则可以在不更改类协定的情况下完成更改。


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 431 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信