这两者有什么区别吗?
int a;
public int A
{
get => a;
set => a = value;
}
public int A { get; set; }
public int A { get; set; }
与说的完全一样:
private int _A;
public int A
{
get => _A;
set => _A = value;
}
自动属性只是private字段以及公共getter和setter的语法糖。它允许您访问和改变字段(作为属性),而无需 getter 和 setter 方法的样板。我们必须始终封装我们的数据,而属性旨在加快写出数据的过程
如果这是java,你会得到类似的东西:
private int a;
public void setA(int a){
this.a = a;
}
public int getA(){
return a;
}
在 Java 中创建类时,您必须习惯性地定义 getter、setter、哈希码和字符串方法。当然,现代 IDE 确实会为您生成这些的库存实现,但在心理上它已成为给定的。如果我们例行创建的这些方法中没有特殊的逻辑,为什么要被迫将其写出来呢?自动道具旨在消除一些麻烦。它只是一种提高代码质量的语法,使代码看起来更简洁。它预先告诉您您已经拥有开箱即用的库存访问器和修改器
它也非常模块化,请查看文档以了解如何制作诸如私有设置器之类的东西,使用
init
进行不变性后 obj 构造等
在 C# 中使用公共属性几乎总是比使用公共字段更可取,最容易记住的方法是:私有字段、上面任何访问模式的属性