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

我看到很多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;

}

明确地说,当您需要对基础数据进行一些转换时,我理解了获取方法和设置方法的价值。但是在您只是传递值的情况下,这似乎是不必要的冗长。


临摹微笑
浏览 447回答 3
3回答

肥皂起泡泡

我倾向于同意(这似乎是不必要的冗长),尽管这是我们团队尚未解决的问题,因此我们的编码标准仍然坚持所有类的冗长属性。几年前,杰夫·阿特伍德(Jeff Atwood)处理了这个问题。他回顾性指出的最重要的一点是,从字段更改为属性是代码中的重大更改。任何消耗它的东西都必须重新编译才能与新的类接口一起使用,因此,如果控件之外的任何东西正在消耗您的类,则可能会遇到问题。

不负相思意

它封装了这些成员的设置和访问。如果从现在开始一段时间后,代码的开发人员需要在访问或设置成员时更改逻辑,则可以在不更改类协定的情况下完成更改。
打开App,查看更多内容
随时随地看视频慕课网APP