C# 利用get和set方法计算变量值

C# 利用get和set方法计算变量值,c#,class,properties,C#,Class,Properties,我使用get和set方法获取数据。我想计算浪费值。这就是我试图解决这个问题的方式 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; }

我使用get和set方法获取数据。我想计算
浪费
值。这就是我试图解决这个问题的方式

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;
        }
    }
}

由于希望从其他属性的值计算
浪费
,并且在尝试访问此属性时希望具有此值,因此需要将计算代码放入getter

public decimal Waste
{
    get => this.U_knitgWeight - this.U_FinishWeight;
}
此外,允许设置此值也没有意义,因为它的意义是基于外部不可见的内部状态的计算。这意味着您可以完全删除setter。通过这样做,您还可以删除
私有十进制浪费字段,因为它现在是多余的

编辑:

我注意到的另一件事是,您有一个内部
OSSP-OSSP字段,该字段从未在代码中的任何位置设置。我假设您希望使用当前对象的实际值进行计算。因此,在这种情况下,您需要在用于计算的两个属性之前使用
this.


如果我在这里错了,请纠正我,因为你可能会有目的地解释为什么要做这个
OSSP-OSSP字段

由于您希望从其他属性的值计算
废物
,并且在尝试访问此属性时希望具有此值,因此需要将计算代码放入getter

public decimal Waste
{
    get => this.U_knitgWeight - this.U_FinishWeight;
}
    get
    {
        return ossp.U_knitgWeight - ossp.U_FinishWeight;
    }
此外,允许设置此值也没有意义,因为它的意义是基于外部不可见的内部状态的计算。这意味着您可以完全删除setter。通过这样做,您还可以删除
私有十进制浪费字段,因为它现在是多余的

编辑:

我注意到的另一件事是,您有一个内部
OSSP-OSSP字段,该字段从未在代码中的任何位置设置。我假设您希望使用当前对象的实际值进行计算。因此,在这种情况下,您需要在用于计算的两个属性之前使用
this.

如果我在这里错了,请纠正我,因为你可能会有目的地解释为什么要做这个
OSSP-OSSP字段

    get
    {
        return ossp.U_knitgWeight - ossp.U_FinishWeight;
    }
当调用get方法时,它在计算后返回值


当调用get方法时,它在计算后返回值。

将setter中的代码放入getter并删除setter@MongZhu公共十进制废物{get=>Waste=ossp.U_knitgWeight-ossp.U_FinishWeight;}发生错误“对象引用未设置为对象的实例。'您不再需要
私有小数浪费
字段。您只需要返回计算结果。你能给我解释一下你为什么要做
OSSP-OSSP变量并将其用于计算?将setter中的代码放入getter并删除setter@MongZhu公共十进制废物{get=>Waste=ossp.U_knitgWeight-ossp.U_FinishWeight;}发生错误“对象引用未设置为对象的实例。'您不再需要
私有小数浪费
字段。您只需要返回计算结果。你能给我解释一下你为什么要做
OSSP-OSSP变量并将其用于计算?只需不发布代码即可添加说明,以便其他人了解其工作原理。完成添加注释只需不发布代码即可添加说明,以便其他人了解其工作原理。完成添加注释