在get中使用私有成员而不仅仅是让类自动设置属性本身有什么好处?

时间:2016-09-20 15:27:33

标签: c# properties

我在代码中看到了这种事情。

public int SomeValue
{
    get { return _someValue; }
}
private int _someValue;

然后,类设置_someValue,外部访问器必须使用SomeValue来查看值。

执行此操作的好处是什么,而不是仅将属性设置为仅获取,然后在内部设置类SomeValue?

public int SomeValue { get; }

添加额外的私有变量似乎只是膨胀代码。

3 个答案:

答案 0 :(得分:2)

Person

不等于

public int SomeValue
{
    get { return _someValue; }
}
private int _someValue;

如果你使用自动属性,则相当于

public int SomeValue { get; }

您无法在内部使用自动属性更改public int SomeValue { get { return _someValue; } } private readonly int _someValue; 的值,但您可以使用原始代码。

话虽如此,根据您的评论,代码很可能是在C#6之前编写的,当时引入的自动只读属性和原作者太懒或者不知道他可以将_someValue标记为{ {1}}并且无论如何都不打算更改_someValue

答案 1 :(得分:2)

如果您想将代码更新为更新的语法,则等效项为:

public SomeValue { get; private set; }

此致

答案 2 :(得分:1)

如果您使用此自动属性,如果要在程序运行期间更改该值,可以执行哪些操作?

  

A property without a set accessor is considered read-only