2 回答
TA贡献1847条经验 获得超11个赞
如果我是你,我会将 Total 计算和 Bust 分开一点:
public class Player
{
public bool Bust { get; set; }
public int GetTotal()
{
if (Bust)
{
return 0;
}
var total = 0;
foreach (int card in hand)
{
total += card;
}
return total;
}
}
需要注意的几点:
计算是通过一种方法而不是属性完成的 - 我认为这是一种更简洁的方法,因为属性应该非常简单并且其中没有任何逻辑
在 GetTotal 计算中包含 Bust 并在 Bust 设置为 true 时返回 0
始终计算总价值,除非您有充分的理由拥有它的缓存版本
希望这可以帮助。
TA贡献1847条经验 获得超7个赞
实际上,每次调用属性的 getter 时,您都会重新计算总数。
一个解决办法是让现场total的Nullable<int>所以如果是null,你做你正在做的其实不然返回的内容在现场设置的逻辑total。
public class Player
{
private int? total; // <- Nullable<int> here
public int Total
{
get
{
if(total.HasValue) // <- If value is set return that value.
{
return total.Value;
}
total = 0;
foreach (int card in hand)
{
total += card;
}
return total.Value;
}
set { this.total = value; }
}
}
- 2 回答
- 0 关注
- 172 浏览
添加回答
举报