只是一个简单的问题,以便了解使用每次需要更改值时调用的方法来更新属性值或仅在 getter 中执行此操作之间是否有更好的做法。
例如在这之间:
public double Balance { get; private set; }
private void UpdateBalance()
{
if (Payments.IsNullOrEmpty())
{
Balance = 0;
}
else
{
double amountSum = 0;
foreach (Payment payment in Payments)
{
amountSum += payment.Amount;
}
Balance = amountSum;
}
}
还有这个:
public double OtherBalance
{
get
{
if (Payments.IsNullOrEmpty())
return 0;
double amountSum = 0;
foreach (Payment payment in Payments)
{
amountSum += payment.Amount;
}
return amountSum;
}
}
我能想到的唯一区别是性能,因为在第一种情况下,每次我们尝试获取属性的值时,getter 都会遍历整个列表。不过,您无需担心每次执行可能影响属性值的更改(如第二个选项中所示)时都会调用 Update
方法。这种差异真的很重要吗?除此之外,是否有任何理由选择一个选项而不是另一个选项?
提前致谢
最佳答案
在第一种读取余额的方法中,您应该再次调用getter,而在第二种方法中,根本没有余额,我个人更喜欢第二种方法,因为它在调用时生成值,因此您可以确保它始终更新,并且不需要调用函数然后读取值,因此它更干净并且更可维护。
关于c# - 属性的值应该用方法更新还是在 getter 中确定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091242/