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

时间:2015-03-11 13:14:59

标签: c# abstract-class object-oriented-analysis

所以我前几天跟着一个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();
    }

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

1 个答案:

答案 0 :(得分:3)

  

有什么区别?

您使用的是“自动属性”,示例代码则不是。也许样本是在将自动属性引入C#之前编写的。

  

哪一个更好,为什么?

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

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


1 我相信这会在VS2015中发生变化。