可能重复:
C#:公共字段与自动属性重复?我认为不会:
这个问题是不一样的"为什么要使用属性,而不是公共领域".具有指定getter和setter的属性与公共字段大不相同.我的问题是,是一个没有吸气剂和二传手的财产,任何不同.
由于最近有一个空的getter和setter的能力,使用它们而不是仅仅声明一个公共成员变量有什么好处?
例:
public string MyProperty
{
    get;
    set;
}
与:
public string MyProperty;
Web*_*euw 43
一句话:继承.
属性是可继承的,而字段则不是.您可以在继承的类中使用字段,但不能通过将其设置为虚拟来更改其行为.
像这样:
public class Foo {
  public virtual int MyField = 1; // Nope, this can't
  public virtual int Bar {get; set; }
}
public class MyDerive : Foo {
  public override MyField; // Nope, this can't
  public override int Bar {
    get {
      //do something;
    }
    set; }
}
编辑:除了继承的事实,其他答案中指出的点(如可见性)也是字段属性的巨大好处.
Ron*_*erg 29
使用字段无法处理的属性可以做的一件事是限制setter或getter的可见性:
public string MyProperty { get; private set; }
我用了很多东西.
你不能用字段做的东西(更强大)是在界面中定义它们.假设您需要一个需要实现类具有特定属性的接口:
public interface MyInterface
{
    string MyProperty { get; }
}
请注意,您不需要在此处设置setter.完全由实现类来确定它们应该如何设置MyProperty.
Luc*_*ero 11
字段不能在接口中公开.并且如果需要,可以随时将自动属性更改为"正常"属性,而无需更改类的签名和界面.
通常,字段被视为实现细节,在将来的代码版本中可能会更改.因此,您应该通过方法和属性公开数据,为未来的内部更改留出开放的方式,这不会影响使用该类的代码.
与简单的公共领域相比,物业具有以下几个优势:
| 归档时间: | 
 | 
| 查看次数: | 37935 次 | 
| 最近记录: |