C#使用另一个字段的setter更新字段

时间:2018-06-08 21:32:00

标签: c# constructor getter-setter

我有一个班级Fuel1

class Fuel1
{
    public double Temperaure                 
    {
        get { return Temperaure; }
        set
        {
            Temperaure = value;
            initialize(Temperaure);
        }
    }

    public double Cp { get; private set; }  // J/mol.K
    public double H { get; private set; }  // J/mol

    public Fuel1(double Temperaure)
    {
        this.Temperaure = Temperaure;
        initialize(Temperaure);
    }

    private double calculate_cp(double te)
    {
        // calculate Cp
    }

    private double calculate_h(double te)
    {
        // calculate H
    }

    private void initialize(double temperature)
    {
        H = calculate_h(temperature);
        Cp = calculate_cp(temperature);
    }
}

这个类是用这样的温度初始化的:

var fuel = new Fuel1(1000.0);

然后在initialize方法中设置Cp和H字段。我想在使用setter更新T的值时自动更新H和Cp的值。例如,我将温度设置为1200。

fuel.Temperature = 1200.0;

我希望Cp和H更新。但是,将initialize方法放入setter会导致无限循环。如果不进入无限循环,我该怎么做?

1 个答案:

答案 0 :(得分:0)

这很疯狂。这是循环的

public double T                 
{
    get { return T; }
    set
    {
        T = value;
        initialize(T);
    }
}

您需要一个支持领域

private double t;
public double T                 
{
    get { return t; }
    set 
    {    
        t = value;
        initialize(t);
    }
}