leo*_*ora 9 c# language-agnostic oop methods class
哪个更好 ???
public class Order
{
private double _price;
private double _quantity;
public double TotalCash
{
get
{
return _price * _quantity;
}
}
Run Code Online (Sandbox Code Playgroud)
要么
public class Order
{
private double _totalCash;
private double _price;
private double _quantity;
private void CalcCashTotal()
{
_totalCash = _price * _quantity
}
public double Price
{
set
{
_price = value;
CalcCashTotal();
}
}
public double Quantity
{
set
{
_price = value;
CalcCashTotal();
}
}
public double TotalCash
{
get
{
return _totalCash;
}
}
Run Code Online (Sandbox Code Playgroud)
Cha*_*ham 14
有权衡.如果计算简单并且不需要很长时间,那就把它放在get中.它让您的生活更轻松,因为您不必担心在总价格依赖的每一组中进行检查,这可能会导致错误.
如果计算需要花费很多时间,那么您也可以采用混合方法.您可以在所有依赖集中设置IsDirtyTotalPrice布尔值,然后在get中进行计算并对其进行缓存,以便get只在需要时计算变量.你没有在集合中进行计算,因为它们可能有很多,你想尽可能少地进行计算.
public class Order
{
private double _totalCash;
private double _price;
private double _quantity;
private _IsDirtyTotalCash = true;
private void CalcCashTotal()
{
_totalCash = _price * _quantity
}
public double Price
{
set
{
_price = value;
_IsDirtyTotalCash = true;
}
}
public double Quantity
{
set
{
_price = value;
_IsDirtyTotalCash = true;
}
}
public double TotalCash
{
get
{
if(_IsDirtyTotalCash)
{
_totalCash = CalcTotalCost();
_isDirtyTotalCash = false;
}
return _totalCash;
}
}
}
Run Code Online (Sandbox Code Playgroud)