问题描述
我正在使用get和set方法来获取数据。我想计算waste
的值。这就是我试图解决此问题的方法。
class Ossp
{
private decimal waste;
public int DocNum { get; set; }
public string U_ItemCode { get; set; }
public string U_ItemName { get; set; }
public string U_ItemDesc { get; set; }
public string U_WetProcess { get; set; }
public string U_Color { get; set; }
public string U_Size { get; set; }
public decimal U_knitgWeight { get; set; }
public decimal U_FinishWeight { get; set; }
Ossp ossp ;
public decimal Waste
{
get => waste;
set
{
waste = ossp.U_knitgWeight - ossp.U_FinishWeight;
}
}
}
解决方法
由于您希望Waste
是根据其他属性的值来计算的,并且想要在尝试访问此属性时具有该值,因此需要将计算代码放入getter中。
public decimal Waste
{
get => this.U_knitgWeight - this.U_FinishWeight;
}
此外,允许设置该值没有意义,因为它的含义是基于内部不可见的内部状态的计算得出的。因此,这意味着您可以完全删除二传手。这样一来,您也可以删除private decimal waste;
字段,因为它现在是多余的。
编辑:
我要注意的另一件事是您有一个内部OSSP ossp;
字段,该字段从未在代码中的任何地方设置。我假设您要使用当前对象的实际值进行计算。因此,在这种情况下,您需要在用于计算的2个属性之前使用this.
。
如果我在这里错了,请纠正我,因为您可能有此目的,因此才创建了OSSP ossp;
字段
get
{
return ossp.U_knitgWeight - ossp.U_FinishWeight;
}
调用get方法时,它将在计算后返回值。