除了较少的代码行之外,还需要了解使用自动属性的好处吗?
我们最初使用如下:
private int sample;
public int Sample
{ get {return sample};
set {this.sample=value};
}
现在我们直接设置它。为什么我们用来定义一个私有变量?
答案 0 :(得分:5)
你还在创建一个私有变量 - 它只是由编译器在幕后完成的。该变量被赋予“不可言状的名称”,确保您不能在源代码中引用它。
您仍然可以获得所有属性的好处(您可以稍后从自动属性更改为“手动”属性,没有兼容性问题)但没有所有的瑕疵。好处是只是代码最终变得更加简洁。我认为这是一个重要的好处,但是:)
答案 1 :(得分:1)
您的私有示例变量称为支持字段,它保存属性的实际数据。如果属性只是基本的get / set,则不需要自己声明一个支持字段。正如Jon Skeet所说,支持字段将由幕后编译器生成。如果您要求更改,您可以随后决定自己声明一个支持字段,并在您的属性中使用该字段。由于其余代码使用该属性,您的代码仍将编译。
当您的属性包含某些逻辑时,支持字段非常有用。
例如,如果没有支持字段(不在我所说的设定者中),则无法完成以下操作
public int Sample
{
get { return _sample; }
set
{
if (value > _sample)
_sample = value;
}
}
此外,如果getter和setter没有逻辑,那么你的属性可以这样写。
public int Sample { get; set; }