【发布时间】:2015-03-11 13:14:58
【问题描述】:
所以我前几天在学习 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();
}
有什么区别?哪个更好,为什么?
【问题讨论】:
-
这个问题更适合
CodeReview -
您的问题是关于添加构造函数还是自动属性?
-
另请注意,C# 并不总是具有自动属性。该教程很可能是从那个时候开始的:)
-
“更好”是一个加载词。如果这意味着“在保留功能的同时更短”,那么您的第二个 sn-p 将获胜。如果它的意思是“可以用 C# 2.0 编译”,那么首先 sn-p 胜出。
-
如果你将来扩展你的类,在属性设置器和属性获取器中添加一些逻辑,或者需要在你的类中访问原始属性值表单而不通过任何属性逻辑那么你需要带有支持字段的属性。
标签: c# abstract-class object-oriented-analysis