所以我前几天跟着一个c#教程(仍然是一个初学者),我看到了如何定义ATMState类:
public abstract class ATMState
{
private ATM atm;
public ATM Atm
{
get { return atm; }
set { atm = value; }
}
private int dummyCashPresent = 1000;
public int DummyCashPresent
{
get { return dummyCashPresent; }
set { dummyCashPresent = value; }
}
public abstract string GetNextScreen();
}
说实话,我发现这些声明比较混乱,所以我决定以自己的方式重做:
public abstract class ATMState
{
public ATM Atm { get; set; }
public int DummyCashPresent { get; set; }
public ATMState()
{
DummyCashPresent = 1000;
}
public abstract string GetNextScreen();
}
有什么区别?哪一个更好,为什么?
答案 0 :(得分:3)
有什么区别?
您使用的是“自动属性”,示例代码则不是。也许样本是在将自动属性引入C#之前编写的。
哪一个更好,为什么?
通常自动属性更好:更紧凑的代码更少阅读和理解。如果没有逻辑可以放入getter或setter,那么你应该使用自动属性。
但是,当前 1 您无法在自动属性的getter或setter上设置断点,因此能够跟踪有时需要使用显式支持字段突破的访问。 / p>
1 我相信这会在VS2015中发生变化。