我看到很多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; }
明确地说,当您需要对基础数据进行一些转换时,我理解了获取方法和设置方法的价值。但是在您只是传递值的情况下,这似乎是不必要的冗长。
我倾向于同意(这似乎是不必要的冗长),尽管这是我们团队尚未解决的问题,因此我们的编码标准仍然坚持所有类的冗长属性。
几年前,杰夫·阿特伍德(Jeff Atwood)处理了这个问题。他回顾性指出的最重要的一点是,从字段更改为属性是代码中的重大更改。任何消耗它的东西都必须重新编译才能与新的类接口一起使用,因此,如果控件之外的任何东西正在消耗您的类,则可能会遇到问题。