我看到很多 C# 类的示例代码都是这样做的:
public class Point {
public int x { get; set; }
public int y { get; set; }
}
或者,在旧代码中,具有显式私有(private)支持值但没有新的自动实现的属性:
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)字段(如下所示)之间在功能上有什么区别吗?
public class Point {
public int x;
public int y;
}
明确地说,当您需要对基础数据进行一些转换时,我理解 getter 和 setter 的值(value)。但在您只是传递值的情况下,它似乎不必要地冗长。
最佳答案
我倾向于同意(这似乎不必要地冗长),尽管这是我们团队尚未解决的问题,因此我们的编码标准仍然坚持所有类的冗长属性。
Jeff Atwood几年前处理过这个问题。他回顾指出的最重要的一点是,从字段更改为属性是一个 breaking change在你的代码中;任何使用它的东西都必须重新编译以使用新的类接口(interface),所以如果你控制之外的任何东西正在使用你的类,你可能会遇到问题。
关于c# - 自动实现的 getter 和 setter 与公共(public)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/111461/