C#中的自动属性

时间:2014-07-02 06:46:55

标签: c# properties

除了较少的代码行之外,还需要了解使用自动属性的好处吗?

我们最初使用如下:

private int sample;

public int Sample
{ get {return sample};
  set {this.sample=value};
}

现在我们直接设置它。为什么我们用来定义一个私有变量?

2 个答案:

答案 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; }