这两个c#抽象类有什么区别?

What is the difference between these two c# abstract classes?

所以前几天我在学习 c# 教程(还是初学者),我看到了 class 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();
    }

有什么区别?哪个更好,为什么?

What is the difference?

您正在使用 "automatic properties",示例代码不是。也许该示例是在将自动属性引入 C# 之前编写的。

Which one is better and why?

通常自动属性更好:更紧凑的代码更难阅读和理解。如果您没有逻辑可以放入 getter 或 setter,您应该使用自动属性。

但是,目前1您不能在自动属性的getter或setter上设置断点,因此能够跟踪有时需要使用显式支持字段突破的访问。


1 我相信这会在 VS2015 中改变。