我目前正在尝试实现属性,特别是限制我的setter。例如,我有一个'Money'浮动字段,我喜欢它,所以你可以添加/减去它的值,但当它在0时,使它不能再减去它,但它仍然可以添加到。
我看到在下面的代码中,一旦'Money'达到0,它将始终停留在0.有没有办法检查是否添加了setter?我知道您可以在AddMoney或SubtractMoney方法中检查它,但如果可以在setter中这样做则更加好奇。
public float Money {
get {
return this._money;
}
set {
if (_money <= 0){
_money = 0;
} else {
_money = value;
}
}
}
void AddMoney(float addAmount){
Money += addAmount;
}
void SubtractMoney(float subtractAmount){
Money -= subtractAmount;
}
答案 0 :(得分:1)
尝试测试值是否为负值,不要更改Money
值:
set {
if (value >= 0)
{
_money = value;
}
else
{
//You may throw exception, or log a warning
}
}