automatic properties in C#
本问题已经有最佳答案,请猛点这里访问。
需要了解使用自动属性的好处,除了少一些代码行?
最初我们使用如下:
1 2 3 4 5 6 | private int sample; public int Sample { get {return sample}; set {this.sample=value}; } |
现在我们直接得到n集,为什么我们要定义一个私有变量?
您仍然在创建一个私有变量——编译器只是在幕后为您完成了这个操作。变量被赋予了一个"无法形容的名称",确保您不能在源代码中引用它。
您仍然可以获得属性的所有好处(稍后您可以从自动属性更改为"手动"属性,不存在兼容性问题),但不存在所有问题。其好处就是代码最终变得更加简洁。不过,我认为这是一个巨大的好处:)
您的私有示例变量称为支持字段,它保存属性的实际数据。如果属性只是基本的get/set,则不需要自己声明支持字段。正如jon skeet提到的,后台字段将由编译器在后台生成。如果您的需求发生了变化,您可以决定稍后自己声明一个支持字段,并在您的属性中使用它。由于代码的其余部分使用该属性,因此代码仍将编译。
当属性包含某些逻辑时,支持字段非常有用。
例如,如果没有支持字段(不是在setter中),就不能执行以下操作
1 2 3 4 5 6 7 8 9 10 | public int Sample { get { return _sample; } set { if (value > _sample) _sample = value; } } |
此外,如果getter和setter没有逻辑,则可以这样编写属性。
1 | public int Sample { get; set; } |