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

C# update fields using another field's setter

我有一个 class 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);
    }
}

class 的温度初始化如下:

var fuel = new Fuel1(1000.0);

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

fuel.Temperature = 1200.0;

希望Cp和H更新。但是,将初始化方法放在 setter 中会导致无限循环。在没有 运行 进入无限循环的情况下我应该怎么做?

这太疯狂了。这是循环

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