使用getter和setter声明私有财产有什么好处吗?

Amo*_*n17 10 .net c# conventions

我正在审查另一个开发人员的代码,他已经编写了很多类级变量的代码,类似于以下内容:

    /// <summary>
    /// how often to check for messages
    /// </summary>
    private int CheckForMessagesMilliSeconds { get; set; }

    /// <summary>
    /// application path
    /// </summary>
    private string AppPath { get; set; }
Run Code Online (Sandbox Code Playgroud)

不这样编码会增加不必要的开销,因为变量是私有的吗?

我不是在考虑私有变量需要这种编码模式的情况吗?

Mik*_*keP 9

这就像说私有方法没有益处,因为它们增加了不必要的开销,并且没有人在类外面使用它们.

属性为您提供变量与其余代码之间的一个联系点.将来,您可能希望在变量更改时添加错误检查或更新其他值,并且属性将允许您这样做.


kem*_*002 6

将值分配给私有变量(由编译器为您创建)时,私有属性为您提供了抽象级别.这样做的效率并不低,如果您需要更改将来的分配方式,您只需要担心在一个地方更新它.

它还可以在应用程序中提供一致性.如果所有赋值都是通过属性完成的,那么有些可以验证赋值,而有些则不能.对于与财产接口的人,验证的和没有验证的人之间没有区别.(这样有人不会意外地将值赋给不验证的局部变量.)