这两个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 中改变。
所以前几天我在学习 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 中改变。