为什么在没有逻辑时使用属性?

Rya*_* S. 1 c# properties

我正在阅读有关XNA的教程,它使用以下代码:

private int score = 0;

public int Score
{
    get { return score; }
    set { score = value; }
}
Run Code Online (Sandbox Code Playgroud)

使用房产有什么意义?为什么不用public int Score = 0;

小智 6

我会在这里使用自动属性:

public int Score { get; protected set; }
Run Code Online (Sandbox Code Playgroud)

因为它是"减少打字的同样的事情"(但实际上可能更好,因为它限制谁可以设置分数;-)

属性的一些原因(超过公共成员变量):

  1. 属性允许单独设置getter和setter的可见性,如上所示.

  2. 可以在Interfaces中指定属性.(你针对接口编程的......对吧?;-)

  3. 在属性和成员变量之间切换会破坏ABI(应用程序二进制接口:例如需要重新编译).但是,可以在不破坏ABI 的情况下重新定义现有Property的实现.

  4. 可以在"属性"中设置断点.偶尔非常方便.

  • @ ryansworld10我*从不*(好吧,也许有一次案例...... ;-)使用公共成员变量.这样我可以更好地控制曝光表面 - 无论我在内部重命名或处理数据都无关紧要; 表面保持不变.它使重构*更容易*. (3认同)